Comment activer le stemming lors de la recherche avec lucene.net?Comment activer le stemming lors d'une recherche avec lucene.net?
Répondre
Pour ce faire, vous devez écrire votre propre classe d'analyseur. C'est relativement simple. Voici celui que j'utilise. Il combine l'arrêt du filtrage des mots. Porter et (ce peut être trop pour vos besoins) décapage des accents des personnages.
/// <summary>
/// An analyzer that implements a number of filters. Including porter stemming,
/// Diacritic stripping, and stop word filtering.
/// </summary>
public class CustomAnalyzer : Analyzer
{
/// <summary>
/// A rather short list of stop words that is fine for basic search use.
/// </summary>
private static readonly string[] stopWords = new[]
{
"0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "000", "$", "£",
"about", "after", "all", "also", "an", "and",
"another", "any", "are", "as", "at", "be",
"because", "been", "before", "being", "between",
"both", "but", "by", "came", "can", "come",
"could", "did", "do", "does", "each", "else",
"for", "from", "get", "got", "has", "had",
"he", "have", "her", "here", "him", "himself",
"his", "how","if", "in", "into", "is", "it",
"its", "just", "like", "make", "many", "me",
"might", "more", "most", "much", "must", "my",
"never", "now", "of", "on", "only", "or",
"other", "our", "out", "over", "re", "said",
"same", "see", "should", "since", "so", "some",
"still", "such", "take", "than", "that", "the",
"their", "them", "then", "there", "these",
"they", "this", "those", "through", "to", "too",
"under", "up", "use", "very", "want", "was",
"way", "we", "well", "were", "what", "when",
"where", "which", "while", "who", "will",
"with", "would", "you", "your",
"a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "m", "n", "o", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z"
};
private Hashtable stopTable;
/// <summary>
/// Creates an analyzer with the default stop word list.
/// </summary>
public CustomAnalyzer() : this(stopWords) {}
/// <summary>
/// Creates an analyzer with the passed in stop words list.
/// </summary>
public CustomAnalyzer(string[] stopWords)
{
stopTable = StopFilter.MakeStopSet(stopWords);
}
public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
{
return new PorterStemFilter(new ISOLatin1AccentFilter(new StopFilter(new LowerCaseTokenizer(reader), stopWords)));
}
}
Merci, je vais essayer ça. – devson
+1 merci Jack, juste ce que je cherchais. Si je pouvais, je marquerais cela comme la réponse! – andy
J'ai utilisé votre exemple, mais je n'obtiens pas de résultats pour les requêtes pour un nombre '4656' (l'analyseur standard fonctionne) J'ai remplacé les mots d'arrêt par le' StopAnalyzer.ENGLISH_STOP_WORDS' intégré qui n'inclut pas de chiffres, aucune idée de ce qui se passe Ici? – Myster
Vous pouvez utiliser Snowball ou PorterStemFilter. Voir le Java Analyzer documentation comme guide pour combiner différents Filtres/Tokenizers/Analyseurs. Notez que vous devez utiliser le même analyseur pour l'indexation et la récupération, de sorte que la gestion du stemming doit commencer au moment de l'indexation.
Merci, je vais essayer ça. – devson
- 1. Lucene.Net TermQuery recherche générique
- 2. Lucene.NET - Recherche de phrase contenant "et"
- 3. Comment désactiver le mot stemming dans la recherche de texte intégral dans SQL Server?
- 4. Lucene.NET avec SQL SERVER 2000
- 5. recherche Phrase exacte en utilisant Lucene.net
- 6. comment effectuer l'indexation et la recherche dans Lucene.Net
- 7. Comment obtenir les mots clés dans lucene.net
- 8. Caractéristiques Lucene.Net
- 9. activer et désactiver le système de recherche l'option
- 10. lucene.net combine plusieurs filtres et aucun terme de recherche
- 11. Recherche de texte intégral PostgreSQL vs NHibernate.Search via Lucene.Net
- 12. Lucene.NET Recherche Mise en évidence qui respecte balises HTML
- 13. Comment activer les cookies lors de l'AFFICHAGE avec URLConnection dans le SDK iPhone?
- 14. Lucene.Net maintien des index lors de l'utilisation de MultiSearcher
- 15. Exemple de projet Recherche NHibernate en utilisant Lucene.Net
- 16. Comment implémentez-vous un filtre personnalisé avec Lucene.net?
- 17. Lucene.Net Résultat de la recherche pour mettre en surbrillance les mots clés de recherche
- 18. Comment équilibrer la charge Lucene.Net?
- 19. requête Lucene.Net avec les principaux caractères génériques
- 20. Indexation du contenu multilingue avec Lucene.net
- 21. NHibernate.Search avec Lucene.NET sans utiliser DB?
- 22. Lucene .Net Recherche avec TermVector
- 23. Comment activer le défilement automatique sur GtkSourceView2?
- 24. Comment activer le support RDS pour BlazeDS?
- 25. Comment activer le profileur de fonction PostgreSQL?
- 26. Comment puis-je activer le haut-parleur
- 27. Comment activer le menu du ruban?
- 28. Activer le contenu wordpress
- 29. Et/ou mot-clé lors de la recherche avec ASP.NET
- 30. Comment chercher tous les résultats dans lucene.net
Quel analyseur utilisez-vous? – Kane
J'utilise un analyseur standard. – devson