lucene.netを使用して検索する際にステミングを有効にする方法はありますか?lucene.netを使用して検索するときにステミングを有効にするにはどうすればよいですか?
15
A
答えて
20
これを行うには、独自のアナライザクラスを作成する必要があります。これは比較的簡単です。ここに私が使っているものがあります。これはストップワードフィルタリングを組み合わせたものです。ポーター・ステミングと(これはあなたの必要性のためにあまりにも多いかもしれません)文字からアクセントを取り除きます。
/// <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)));
}
}
7
SnowballまたはPorterStemFilterを使用できます。 異なるフィルタ/トークナイザ/アナライザを組み合わせる際のガイドとしてJava Analyzer documentationを参照してください。インデクシングと検索に同じアナライザを使用する必要があるので、処理のステミングはインデックス時に開始する必要があります。
+0
ありがとう、私はこれを試してみます。 – devson
関連する問題
- 1. ファイルコンテンツの検索にlucene.netを使用するにはどうすればよいですか?
- 2. カレンダーで有効な要素を検索してクリックするにはどうすればよいですか?
- 3. snmp ++を使用してスイッチポートを有効/無効にするにはどうすればよいですか?
- 4. Lucene.Net:検索結果に日付フィルタを追加するにはどうすればよいですか?
- 5. MySQLの検索で@を使用してLIKE検索を行うにはどうすればよいですか?
- 6. Sharepoint 2007での検索を有効にするにはどうすればよいですか?
- 7. jqGridをテキストボックスと共に使用して検索するにはどうすればよいですか?
- 8. C#でPowerShellを使用してネットワークカードを有効にするにはどうすればよいですか?
- 9. Googleカスタム検索にカスタム検索ボックスを使用するにはどうすればよいですか?
- 10. 「プライベートブラウジング」を有効にしてiPhoneでユーザーを検出するにはどうすればよいですか?
- 11. 検索ボックスが表示されているときにオプションメニューを有効にするにはどうすればよいですか? (SearchManager)
- 12. PodioKitとPKTSearchAPIを使用してPodio App内を検索するにはどうすればよいですか?
- 13. VBAを使用してアドインを有効にするにはどうすればよいですか?
- 14. booleanテンプレートパラメータを使用してメンバ関数を有効にするにはどうすればよいですか?
- 15. Cloudera Managerを使用してwebhdfsを有効にするにはどうすればよいですか?
- 16. ビットコードを有効にして静的ライブラリを使用するにはどうすればよいですか?
- 17. angle-cliを使用して時計を有効にするにはどうすればよいですか?
- 18. Xcode:テストターゲットに対してメタルAPI検証を有効にするにはどうすればよいですか?
- 19. mysqlでLIKEとワイルドカードを使用して検索するにはどうすればよいですか?
- 20. attr_accessorを使用するように検索するにはどうすればよいですか?
- 21. 弾性検索で有効なjsonを実行するにはどうすればよいですか?
- 22. SQLの検索条件としてmax(id)を使用するにはどうすればよいですか?
- 23. Xamarin.Formsの共有ターゲットとしてXamarinアプリを有効にするにはどうすればよいですか?
- 24. フルテキスト検索が有効になっているときにテーブルを変更するにはどうすればよいですか?
- 25. 他のアプリケーションのメニューを検査して有効にするにはどうすればよいですか?
- 26. google検索を使用すると「通常」モードに戻るにはどうすればよいですか?
- 27. .NETプロバイダを使用してFirebirdでAUTODDLを有効にするにはどうすればいいですか?
- 28. パラメータを使用してURLから日付を検索するにはどうすればよいですか?
- 29. Railsでelasticsearchを使用してcategory.nameを検索するにはどうすればよいですか?
- 30. collection_selectを使用してbelongs_toをsearchkick gemで検索するにはどうすればよいですか?
あなたはどのアナライザを使用していますか? – Kane
標準のアナライザーを使用しています。 – devson