2009-12-21 70 views
9

我使用波特施特默爾乾的話,這裏是我遇到一個問題:Zend的Lucene的問題單詞「按揭」

字「抵押貸款」是否正確朵朵到「mortgag」 字「抵押權」是(可以說是不正確的)梗,以「按揭」

大約有100個文件與單詞「按揭」 有1號文件與「抵押權人」字

當我建立索引,而不把「抵押權人「在任何文件中,一切工作正常:尋找」抵押「或」抵押「或」 tgag「返回全部100個文件。

當我建立一個索引,其中一個文件包含「抵押權人」時,在索引中搜索「抵押權」只會返回一個帶有「抵押權人」(這是「抵押權」)的文檔。但是,搜索「抵押」或「抵押」將返回全部100個文件。

我可以從這個問題得出的唯一合乎邏輯的結論是lucene首先搜索預處理詞,如果找不到任何結果,它將繼續搜索詞幹詞。因此,當搜索「抵押」時,它首先找到源自「抵押權人」的「抵押」並停止搜索。這是正確的行爲,還是一個錯誤?

回答

1

這聽起來像是一個bug。 Lucene搜索的一個指導原則是:「使用與索引相同的分析器進行搜索,除非您有真正的理由不要」。經過分析和發佈後,Lucene應該返回匹配搜索條件。

就你而言,「抵押」在索引過程中轉化爲「抵押」。檢索過程應反映這一點,並將「抵押」轉換爲「抵押」,然後找到「抵押」(代表「抵押」)的匹配。

看起來,在檢索過程中,您不會阻止查詢,從而導致錯誤的結果。 如果此答案不清楚,請編輯您的問題,並添加幾行代碼來描述您如何創建索引以及如何搜索它。