2010-07-29 173 views
1

我有一個存儲的消息具有以下字段(標題,正文,NewsDate)
我需要以下條件的最佳查詢查詢爲Lucene搜索結果

1)標題更重要,但小於日期
2)如果文檔的日期接近當前日期,則日期應該與當前日期相比更有價值(注意:這並不意味着新聞日期的排序降序可能導致其標題和其結果身體是更相關,但其較舊) 這只是另一個搜索因素,我認爲它需要自定義排序
3)身體已在第三位

任何解決方案?

回答

0

您應該在模式中使用Boosting,而不是非常複雜的查詢。

+0

你會舉個例子嗎? – Ehsan 2010-07-29 17:32:35

1

就像@Guillaume所說的,你需要使用助推。

您可以在兩個地方使用:一個在索引(提升標題和正文)和第二個(日期字段)的同時查詢。日期字段是查詢的時間,因爲它是動態的

  1. 指數時間推進會是這樣:

    場FLD =新場(....); fld.setBoost(10F); // 10倍更重要的,默認爲1

  2. 查詢時間提升將是獲取日期差異(比如在幾天或分鐘)成反比,即更大的應用提升了差異。提升幅度越小。

+0

你不應該需要提升標題或正文。因爲Lucene會自動降低長文本字段的分數,所以身體的得分會低於標題。 – Xodarap 2010-07-29 20:47:20

+0

是的,我想知道我該怎麼寫#2 – Ehsan 2010-07-29 21:04:01

+0

希望你沒有得到這樣的想法,你可以讓SO用戶爲你做你的工作。只是谷歌它。 – Mikos 2010-07-29 22:15:05