6
我在我的ASP.NET/C# web應用程序中直接使用Lucene.NET API。當我使用通配符進行搜索時,如「fuc *」,熒光筆不會突出顯示任何內容,但是當我搜索整個單詞時,如「紫紅色」,它會突出顯示。 Lucene是否有能力使用與之相匹配的相同邏輯來突出顯示?如何讓Lucene(.NET)使用通配符正確突出顯示?
各種可能相關的下面的代碼片段:
var formatter = new Lucene.Net.Highlight.SimpleHTMLFormatter(
"<span class='srhilite'>",
"</span>");
var fragmenter = new Lucene.Net.Highlight.SimpleFragmenter(100);
var scorer = new Lucene.Net.Highlight.QueryScorer(query);
var highlighter = new Lucene.Net.Highlight.Highlighter(formatter, scorer);
highlighter.SetTextFragmenter(fragmenter);
,然後在每一擊...
string description = Server.HtmlEncode(doc.Get("Description"));
var stream = analyzer.TokenStream("Description",
new System.IO.StringReader(description));
string highlighted_text = highlighter.GetBestFragments(
stream, description, 1, "...");
而且我用的QueryParser和StandardAnalyzer。
錯誤......怎麼回事?從我在文檔中看到的,我需要一個MultiTermQuery來解決這個問題,但我只有一個Query。我應該測試typeof MultiTermQuery並投射嗎? – 2010-05-18 13:42:44
我一味地嘗試過: query = parser.Parse(searchText); ((Lucene.Net.Search.PrefixQuery)query).SetRewriteMethod(Lucene.Net.Search.PrefixQuery.SCORING_BOOLEAN_QUERY_REWRITE);如果(query.GetType()== typeof(Lucene.Net.Search.PrefixQuery)) {(Lucene.Net.Search.PrefixQuery)query)。 } 它讓事情變得更糟。 – 2010-05-18 13:49:20
我的意思是在解析器上設置重寫樣式。即使用解析器對象的SetMultiTermRewriteMethod方法。 HTH – 2010-05-18 17:46:18