PerFieldAnalyzer を使用して、新しい LowercaseKeywordAnalyzer を使用するように ExactTitle を設定しています。
private Analyzer GetDefaultAnalyzer()
{
var perFieldAnalyzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_30));
perFieldAnalyzer.AddAnalyzer(ReportFields.ExactTitle, new LowercaseKeywordAnalyzer());
...
フィールドに追加して、インデックスを作成しています:
var exactTitleField = new Field(ReportFields.ExactTitle, report.PortalReportTitle, Field.Store.NO,
Field.Index.NOT_ANALYZED);
exactTitleField.Boost = 10.0f;
reportDoc.Add(exactTitleField);
2 単語の例「test abc」を使用して検索すると、TermQuery 検索を実行しても見つかりません。
var term = new Term(exactField, "test abc");
var exactQuery = new TermQuery(term);
query.Add(exactQuery,Occur.SHOULD);
var hits = searcher.Search(query, null, HitsLimit, Sort.RELEVANCE);
「Test Abc」で検索すると、うまくいきます。この大文字と小文字を区別しないキーワード/用語検索を機能させるにはどうすればよいですか?
アナライザーは次のとおりです。
public class LowercaseKeywordAnalyzer : Analyzer
{
public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
{
TokenStream tokenStream = new KeywordTokenizer(reader);
tokenStream = new LowerCaseFilter(tokenStream);
return tokenStream;
}
}
前もって感謝します。