2011-09-08 17 views
0

我認爲這Solr的psedo-doc的結果的一部分Solr的第一次顯示了一定的成果時,他們

<doc> 
<field name="title"/> 
<field name="name"/> 
<field name="keywords"/> 
</doc> 

一些文檔的將關鍵字「向上」這意味着它們應首先出現(儘管他們的初始訂單位置)當且僅當他們是的部分搜索結果。

所以可以說我有:

doc1('title1','Bob, Alice','people, up, couple') 
doc2('title2','Smart Phone, Laptop, Bob','devices, electronics') 

如果我查詢「標題:標題2名:鮑勃」那我應該先把DOC1(它具有「向上」關鍵字)。 如果我用「名稱查詢:Bob」我仍然因爲同樣的原因獲得doc1。 如果我用「名稱:筆記本電腦」查詢,那麼我應該只在我的結果中獲得doc2。不應該包含doc1,因爲它不符合我的搜索查詢。

任何建議要做到這一點?

回答

0

您有幾種選擇做這樣的事情:在指數時間

  • 功能查詢/升壓查詢(在dismax處理)
  • (升壓文件)
  • 提取物「上」關鍵字附加字段和通過該字段排序,比得分

例如(具有dismax處理程序):

/select?defType=dismax&q=...&bq=keywords:"up"^1000 
+0

我只能查詢不修改索引。請舉個例子? – nonouco

+0

如果您可以使用dismax,請嘗試類似: /select?defType=dismax&q=...&bq=keywords:"up"^1000 – negativ

0

這可以通過Solr的查詢時間提升來解決。因此,遵循Solr Relevancy FAQ的指導 - 您可以爲所有查詢添加額外的提升搜索字詞,例如title:title2 name:Bob keywords:up^2

您也可以在每個文檔的索引時間確定up關鍵字是否存在,然後將其存儲在架構中的附加字段(例如布爾值)中,並根據該布爾字段提升查詢結果。

+0

你的第一個建議是不會起作用的,因爲在每次搜索時我都要追加關鍵字:up^2所以當我用標題搜索時:title10關鍵字:up^2 - 儘管事實上我不應該' t – nonouco

+0

好的,那麼你將需要去第二條路線並存儲你可以在查詢時增加的額外字段。 –

相關問題