Pour commencer avec Lucene.Net. J'ai indexé 100 000 lignes à l'aide de l'analyseur standard, j'ai exécuté des requêtes de test et j'ai remarqué que les requêtes plurielles ne renvoyaient pas de résultats si le terme original était singulier. Je comprends que l'analyseur de boule de neige ajoute le support du stemming, ce qui sonne bien. Cependant, je me demande s'il y a des inconvénients à gong avec boule de neige sur la norme? Est-ce que je perds quelque chose en allant avec? Y a-t-il d'autres analyseurs à considérer?Lucene Standard Analyzer contre Snowball
Répondre
Oui, en utilisant un stemmer tel que Snowball, vous perdez des informations sur la forme originale de votre texte. Parfois, cela sera utile, parfois non. Par exemple, Snowball réduira "organisation" en "orgue", donc une recherche pour "organisation" retournera les résultats avec "orgue", sans pénalité de pointage. Cela dépend de votre contenu et du type de requêtes que vous supportez (par exemple, les recherches sont-elles très simples ou les utilisateurs sont-ils très sophistiqués? Utilisez votre recherche pour filtrer avec précision résultats). Vous pouvez également regarder dans stemmers moins agressifs, tels que KStem.
Je viens d'imaginer que vous pouvez également faire une recherche floue comme ceci "kangourous ~" qui renverra des versions singulières du mot, bien qu'il semble que cela prenne un peu plus de temps pour traiter la requête. – alchemical
@alchemical: Je recommande vraiment de ne pas le faire. ~ est un opérateur très lent, et si votre utilisateur fait des choses comme la recherche d'une phrase, vous êtes un peu vissé. Pourquoi est-ce si mauvais si vous "kangourous" est stocké comme "kangourou"? – Xodarap
OK, c'est bon à savoir - pour utiliser KStem avez-vous besoin de Solr? Avez-vous besoin de travailler avec le code source de Lucene pour l'intégrer? – alchemical
Je viens de terminer un analyseur qui effectue la lemmatisation. Cela est similaire à la génération de racines, sauf qu'elle utilise le contexte pour déterminer le type d'un mot (nom, verbe, etc.) et utilise cette information pour dériver la racine. Il conserve également la forme originale du mot dans l'index. Peut-être my library peut vous être utile. Cela nécessite Lucene Java, cependant, et je ne connais pas de lemmatisateurs C#/.NET.
L'analyseur snowball augmentera votre rappel, car il est beaucoup plus agressif que l'analyseur standard. Donc, vous devez évaluer vos résultats de recherche pour voir si pour vos données vous devez augmenter recall or precision.
Si vous utilisez l'analyseur de boule de neige, vous devriez obtenir des résultats pour singulier/pluriel, car la boule de neige les normalisera dans la même forme. Êtes-vous sûr d'utiliser le même analyseur pour créer un index et l'interroger? – Skarab