2010-07-19 128 views
0

我有一個存儲的消息,因爲單獨的字段(標題,正文)Lucene的文檔 在搜索的時候,我需要創建一個標題提升身體上的查詢申請。 (標題在搜索中更重要),但是它減慢了搜索速度。 一個優化技巧告訴我,我可以將這兩個領域合併爲一個,它絕對加快搜索和索引,但我鬆散得分,我想趕上搜索(提升標題身體)優化Lucene搜索性能

有反正有組合好處 ?

+1

您可以使用兩個單獨的字段向我們提供顯示無法接受的性能的基準嗎?您可能希望兩個單獨的字段不允許短語搜索重疊不同的字段,如標題:「hello」body:如果您有標題+正文的組合字段,即使沒有字段包含,「world」也會匹配搜索「hello world」詞組。 – sisve 2010-07-19 05:47:13

+0

如果你真的想存儲一個包含組合數據的字段,請查看自定義記錄器,這將允許您使用任何所需的算法(和字段)構建您自己的評分路由。我將它作爲練習來真正寫出示例代碼。 ;) – sisve 2010-07-19 05:52:00

回答

0

提振標題比身體和索引他們更多的在同一領域的最簡單方法是將標題文本多次添加。

或者你可以使用有效載荷和覆蓋相似。請參閱:

http://www.lucidimagination.com/blog/2009/08/05/getting-started-with-payloads/

我懷疑這兩種解決方案會給你那麼多的速度改善,雖然。

+0

添加標題字段是棘手的想法 謝謝 – Ehsan 2010-07-19 20:49:49

+0

是的,它絕對加快速度看看 http://wiki.apache.org/lucene-java/ImproveIndexingSpeed 在我的情況下,我不需要存儲標題或身體我只是希望他們索引,所以最好的方法將他們結合起來,加快索引和搜索 – Ehsan 2010-07-19 21:11:58

0

你也可以嘗試在索引時增加。例如,

Document doc = new Document(); 
Field f = new Field(...) 
f.setBoost(10f); // or choose a float value of choice 
doc.Add(f); 

但是爲什麼你有與搜索時間提升搜索性能問題仍不清楚。通常沒有明顯的損失,如果有的話。