2011-06-28 139 views
0

我對Solr的使用是生成一個主要搜索系統:我們基本上以小批量方式提供大量文檔並在其上搜索預先指定的查詢。掃描這些文檔中的每一個文件以查找此特定查詢,如果找到,我們需要將該文件的文件索引ID,路徑和該字符串的命中數存儲在數據庫中。我在網上搜索了從solr中爲每個文檔提取命中計數值的方法,但到目前爲止我所瞭解的全部內容都是Solr根據命中數和其他各種因素自動排序其結果,您可以使用它編輯提升和功能查詢參數。SOLR評分:我可以從Solr中提取命中計數值嗎?

  1. 是否有從Solr提取命中計數的既定方法?

  2. 如果沒有,是否有可能改變Solr的計分公式,使得只考慮命中次數,然後問的Solr返回得分(這基本上是在這種情況下,命中數)

)對不起,我的問題似乎有點令人困惑,我只想從每個文檔的Solr返回命中數,這樣我就可以將它存儲在我的數據庫中。是直接可以通過solr嗎?通過命中計數,我的意思是,如果我正在搜索特定的關鍵字,Solr索引中每個文檔的索引字段中出現的次數爲

SOLR結果實際上是根據文檔的相關性得分權進行排序的,其中包括詞頻和許多其他較小因素......我只希望返回命中計數:我想知道是否存在要麼直接獲得命中計數,要麼改變Solr對文檔的評分,以便它只根據詞頻因子得分,並獲得每個文檔在我的SOLR輸出中的術語頻率值

回答

2

Can我從Solr中提取命中計數值? 排序的命中數的基礎上,結果

您的標題題目是關於「命中計數」,但通過閱讀你的文字,它煤層,你有興趣Solr的得分 - 因爲默認情況下Solr的排序由分數 - 這是,你的意思是「命中計數」?

是否有從Solr中提取命中數的既定方法?

是的,這是有可能得到「分數」的搜索文件的值(由它也可能得到的命中計數的方式)

要獲得分數,簡單的擴大「場列表「參數(fl)乘」分數「。 http://wiki.apache.org/solr/CommonQueryParameters#fl 例如,如果您的字段的文件,ID,PTAH - 加分這樣的: http://localhost:8080/solr/select/?fl=DOCUMENT,ID,PTAH,score 例子:

<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">5</int> 
    <lst name="params"> 
    <str name="start">0</str> 
    <str name="fl">DOCUMENT,ID,PTAH,score</str> 
    </lst> 
    </lst> 

//更新:

無。的出現次數

(關鍵字)在索引處退出的頻率如何?在特定的領域? 所以小搜索將計數你:http://wiki.apache.org/solr/SolrFacetingOverview

//更新2:

月2日更新 - 如果你喜歡以接收文檔ID和文字的數量來算一個文檔中的關鍵字數量對於本文檔,您可以將方面搜索與方面範圍查詢範圍結合使用。 例:看生產廠家「戴爾」的所有文件,並返回該關鍵字的頻率爲每一個文件(ID)

ID -> "dell" exits how many times? 
241 -> 2 
242 -> 0 
243 -> 5 

爲此,請使用以下搜索參數:

<str name="facet.field">YOUR_TEXTFIELD</str> 
<str name="facet.range">ID</str>  <--- ID=field woth the document ID 
<str name="f.ID.facet.range.gap">1</str> <--- count ID in step of 1 
<str name="f.ID.facet.range.start">0</str> <--- start ID for faceted search 
<str name="q">dell</str>     <---string, "keyword" to look/count for 
<str name="f.ID.facet.range.end">1000</str> <--- end ID for faceted search 
<str name="facet">true</str> 
<str name="facet.method">enum</str> 
+0

我想要在單個文檔中出現關鍵字的次數:例如,如果文檔A有4個字符串出現,文檔B有7次出現,那麼我的solr服務器應該返回給我:1)我想從文檔中得到的信息(在我的情況下,只是ID)2)值4和7. –

+0

我相信分面搜索只告訴你有多少文檔滿足特定查詢..例如,如果我有7個文檔相關對一家公司說戴爾,然後分面搜索'戴爾'將返回給我的文件列表和價值7:不是每個文檔中戴爾發生的次數! –

+0

這些參數是否必須在標準搜索請求處理程序下的solrconfig.xml中定義?或者當查詢生成時它們是否通過url傳遞給服務器? –

1

這是比較容易使用solr 4.0只是一個僞字段添加到FL參數:

q=*:*&fl=*,termfreq(field,term) 

如果你喜歡,也可以命名返回值:

q=*:*&fl=*,tf:termfreq(field,term)