0
我使用的是PerFieldAnalyzer設置ExactTitle使用新LowercaseKeywordAnalyzer組合:的創LowercaseKeywordAnalyzer與TermQuery沒有返回結果
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);
如果我搜索「測試美國廣播公司」,它的作品。我能做些什麼來使這個不區分大小寫的關鍵字/詞搜索工作?
這裏的分析:
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;
}
}
在此先感謝。
這是有道理的。但是,當我將其切換到ANALYZED時,無論是「test abc」還是「Test Abc」都找不到。你有沒有看到我錯過的其他東西? – DougJones 2013-03-18 20:15:35
非常感謝您發佈代碼。事實證明,我沒有正確設置分析器索引時(多種方法,改變1和擊中另一種)。這就是說,你幫助我超越了下一個問題,提到我需要小寫正在搜索的輸入。再次感謝! – DougJones 2013-03-19 12:40:37