2012-11-30 29 views
1

我正在使用Alex Shyba的高級數據庫爬網程序對來自Sitecore和Lucene.NET查詢的數據進行索引以進行搜索查詢。當我嘗試進行術語匹配時,例如en-US,zh-CN和de-DE,我在大多數情況下運行穩定,但遇到與_language字段有關的問題。使用Lucene.NET進行Sitecore語言搜索

它返回'en'文化的所有結果。但是,例如在zh-CN文化中,它將返回約99%的結果,並從每組中刪除2-3篇文章。 en和zh-CN是同一項目的不同版本。我可以通過盧克在索引中看到關於這兩種文化中物品的信息。

我在語言字段上使用TermQuery來返回數據。我嘗試使用PhraseQuery和WildCardQuery,但每次都得到相同的結果。

我試着逃避連字符,因爲標準分析器不喜歡帶有反斜槓的超鏈節,但也沒有工作。

在這一點上我沒有想法。我怎樣才能讓我的查詢返回所有匹配的文檔?

謝謝

回答

0

ADC有自己的查詢對象來定義搜索參數。只需使用SearchParam object上的Language屬性按語言進行搜索即可。

+0

我沒有意識到ADC有這個類。我使用Lucene.NET查詢來構建我的邏輯。我的大部分代碼已經完成,現在我不想重寫任何東西。你可能有其他建議嗎? – Gabbar

+0

我建議你看一下ADC中的代碼,看看它是如何處理語言過濾的。 –

+0

看起來像在同一個類中,'ApplyLanguageClause()'方法在'BuiltinFields.Language'上爲該語言的iso代碼添加一個短語查詢。 –