2014-02-11 48 views
0

我並不是Lucene的專家,但我想修改它以滿足以下要求:我應該如何修改Lucene以便進行不同的搜索?

我將每個句子視爲不同的文檔並將其編入索引以便測試搜索。

例如,

輸入的句子:薩姆吃蘋果。傑夫吃橘子。山姆和山姆吃蘋果和蘋果。傑夫傑夫,只有傑夫吃橙子橙子和只有橙子。

當前搜索

當我搜索「薩姆吃蘋果」,目前Lucene搜索得分「山姆山姆和Sam吃蘋果,只有蘋果」最高的,因爲它包含類似的條款「sam」,「」和「蘋果」更多,文檔出現在頂部。

修改搜索(我想)

現在,當我搜索「薩姆吃蘋果」,我要的文檔「薩姆吃蘋果」得分最高,因爲它已經拿到了完全匹配(根據查詢,連同序列,即Sam(第一),吃(第二)和蘋果(第三))。

我所想的事:讓我的自定義查詢,重量和評分(通過擴展查詢重量得分類)。

可行嗎?值得嗎?還有除此之外的任何選項嗎?

任何建議對我來說都很有價值,因爲我只是Lucene的初學者。

+0

這是最困難的路線,「權重」是許多優化發生的地方。試着看看其中的一個標準實現,我向你保證一個頭暈的咒語。 –

+0

我也相信現有的圖書館已經足以支持您的查詢類型。 –

+0

恩,謝謝你的擡頭。 – Sujan

回答

0

如果要結合PhraseQuery由@MarkoTopolnik與其他查詢提示,然後設置污到(這是默認設置),該查詢,這將確保包含提供的文件搜索詞和它們的序列會包括在結果中,並且setBoost對於那個PhraseQuery大於1.0,這將增加由該PhraseQuery獲得的結果得分。我不知道這是否是您需要的最佳解決方案,但它在類似情況下對我有效。我不得不提供超過4.0的提升後,我發現我的查詢組合中有改進的空間。在優化我的BooleanQuery後,我用來組合多個查詢,我可以在1.0到2.0之間調整引導值。

相關問題