Je suis nouveau chez Lucene et mon projet est de fournir une recherche spécialisée pour un ensemble
de livrets. J’utilise Lucene Java 3.1.

L’idée de base est d’aider les gens à savoir où chercher des informations dans le (plutôt
grands et secs) en consultant l’index pour savoir quel livret et quels numéros de page correspondent à leur requête. Chaque document de mon index représente une page particulière dans l’un des livrets.

Jusqu’à présent, j’ai réussi à extraire le texte brut des livrets,
insérez-le dans un index et interrogez-le très bien en utilisant StandardAnalyzer sur les deux
prend fin.

Alors, voici ma question générale:
De nombreuses requêtes sur l’index impliqueront la recherche de noms de lieux mentionnés dans le
livrets. Certains noms de lieux utilisent des variantes de notation. Par exemple, dans le corps du texte
il sera appelé « Ship Creek » sur une page, mais dans un diagramme de carte ailleurs, il pourrait être répertorié comme « Ship Cr. » ou même « Ship Ck. ». Ce que j’ai besoin de savoir, c’est comment aborder le traitement des deux mots consécutifs comme un seul terme et ajouter les variantes de notation en tant que synonymes.

Mon objectif est bien sûr de rechercher avec l’une des variantes et de détecter toutes les occurrences. Si je recherche (Ship AND (Cr Ck Creek)), cela ne me donne pas ce que je veux car d’autres mots peuvent apparaître entre [ship] et [cr]/[ck]/[creek] conduisant à de faux positifs.

Donc, en un mot, j’ai probablement encore besoin des éléments de base fournis par StandardAnalyzer, mais avec un regroupement de termes spécifiques pour émettre des noms de lieux sous forme de termes complets et éventuellement insérer des synonymes pour couvrir les variantes.

Par exemple, le texte « … autorisé de l’embouchure de Ship Creek en amont à … » serait
donner des jetons [allowed],[mouth],[ship creek],[upstream]. Peut-être via un TokenFilter
le chemin, le [ship creek] terme s’étendrait en [ship creek][ship ck][ship cr].

En prime, il serait bien de traiter le texte le plus délicat « .. sauf dans Ship, Bird et
Campbell creeks où la limite est … « comme [except],[ship creek],[bird creek],
[campbell creek],[where],[limit].

Cela semble être un cas d’utilisation assez basique, mais je ne sais pas comment je pourrais utiliser les composants existants de Lucene contrib ou SOLR pour y parvenir. La détection et la fusion doivent-elles être effectuées dans une sorte de TokenFilter? Ai-je besoin d’une implémentation d’Analyseur personnalisée?

Certains des termes de regroupement peuvent probablement être effectués de manière heuristique[[],[creek] est[[ ruisseau]mais j’ai aussi une liste exhaustive des lieux mentionnés dans le texte si cela peut aider.

Merci pour toute l’aide que vous pouvez apporter.

ifeddal

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *