簡體   English   中英

努力解決solr查詢和相關性

[英]Struggling with a solr query and relevance

我在使用Solr時遇到問題。 我們最近從Lucene切換到Solr。

我們有4個(主要)搜索字段供我們搜索:本質,關鍵字,allSearchable和quality; 其中,對於索引中的每個文檔,本質包含關鍵字中的前3個不間斷詞。 “關鍵字”只是關鍵字列表。 並且“ allSearchable”保存的數據只是給定文檔的其他數據的集合。 我們在lucene中所做的是對用戶在搜索框中鍵入的任何給定搜索進行3次搜索(以便按相關性對搜索結果進行排名),如下所示:

在搜索框中輸入的單詞: tree

查詢1: +essence:tree (按“質量”排序),如果查詢1返回了足以滿足我們想要獲取的頁面的需求,則返回。

查詢2: +keywords:tree (按“質量”排序),如果查詢1和查詢2的組合為我們所在的頁面返回了足夠的結果,則返回結果。

查詢3: +allSearchable:tree (按“質量”排序)返回結果。 如果沒有的話,那么運氣不好。

我的問題是分頁。 我以前不必將分頁(startIndex,行)發送給Lucene。 我可以索要所有東西,然后將要返回的所有內容翻轉過來,收集足夠的結果以返回,具體取決於我要的頁面。 使用Solr,我必須傳遞分頁參數。 我們的索引中有超過800萬個文檔,因此要獲取與“樹”之類的查詢相匹配的所有內容,實在太昂貴了。 問題是,如果我要求查詢1中的第3頁,但沒有得到足夠的結果,那么我必須繼續查詢2(關鍵字:樹)。 但這是不對的,因為我要求查詢2的第3頁結果(換句話說,請給我所有與第3頁的'keywords:tree'相匹配的文檔)。 但這並不是我想問的問題。 如果本質不匹配,我只想詢問關鍵字的第1頁。 等等。

我真正在尋找的是一個查詢,這足以滿足我之前做過的這三個查詢,這樣我就可以先得到本質匹配項,然后是關鍵字匹配項,最后是allSearchable匹配項。

我嘗試對以下查詢使用boosting: essence:tree^4.0 keywords:tree^2.0 allSearchable:tree^1.0

但這似乎並不能解決問題,我也不知道為什么嗎? 我拿出了排序,但事情仍然沒有給我正確的結果。 我正在使用默認的StandardRequestHandler(似乎使用了LuceneQueryParser(不是dismax或edismax)。我可以看到在URL中向solr發送了增強(通過在我的requestHandler的defaults部分中添加qf參數來使用增強) solrconfig.xml)。我當然知道lucene可以理解這些參數。誰能告訴我如何構造一個查詢以使我得到上面想要的結果嗎?請enter code here

我建議使用ExtendedDismax查詢解析器(eDisMax) ,然后您可以指定跨字段的提升,如下例所示:

http://localhost:8983/solr/select/?q=tree
  &defType=edismax&qf=essence^4.0+keywords^2.0+allSearchable^1.0

您可能需要在各個字段之間向上或向下調整提升值,以獲得所需的結果。 另外,還有eDisMax的其他參數,這些參數會影響提升效果以及您應該檢查的查詢執行方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM