的問題是有關我的的CMS(Kentico)的依賴內置的Lucene的輔助類。基本上,使用這些類需要通過CMS在索引級指定自定義分析器,我不希望這樣做。所以我最終直接使用Lucene.net幾乎在任何地方都可以獲得使用任何自定義分析器的靈活性
我還對結構數據做了一些更改,並最終使用經過驗證的KeywordAnalyzer分析文檔標籤。以前我試圖在逗號分隔值上做一些自定義標記化魔術,比如[tag1,tag2,帶有很多部分的標籤],並且不能可靠地使用多部分標籤。我仍然保留該字段,但開始在文檔中添加多個「標籤」字段,每個字段存儲一個標籤。所以現在我有N個「標籤」字段用於「N」標籤,每個標籤都被分析爲一個關鍵字,這意味着每個標籤(一個字或多個標籤)都是一個標籤。
我想我用我最初的方法推翻了它。
這就是我最終的結果。
在索引:
KeywordAnalyzer ka = new KeywordAnalyzer();
PerFieldAnalyzerWrapper perFieldAnalyzer = new PerFieldAnalyzerWrapper(srchInfo.GetAnalyzer(true));
perFieldAnalyzer.AddAnalyzer("documenttags_t", ka);
-- Some procedure to compile all documents by reading from DB and putting into Lucene docs
foreach(var doc in docs)
{
iw.AddDocument(doc, perFieldAnalyzer);
}
在搜索:
KeywordAnalyzer ka = new KeywordAnalyzer();
PerFieldAnalyzerWrapper perFieldAnalyzer = new PerFieldAnalyzerWrapper(srchInfo.GetAnalyzer(true));
perFieldAnalyzer.AddAnalyzer("documenttags_t", ka);
string baseQuery = "documenttags_t:\"" + tagName + "\"";
Query query = _parser.Parse(baseQuery);
var results = _searcher.Search(query, sortBy)
假設你正在使用Lucene 3.x中,看起來沒事,給我。是否拋出異常?究竟是什麼問題? – femtoRgon 2013-04-04 21:13:48