簡體   English   中英

Solr-如果在特殊字段中發現查詢,則提升結果

[英]Solr - Boosting result if query is found in a special field

我想知道如果在不使用“ fieldname:query”語法的特殊字段中找到查詢,Solr 3.4是否有可能提升搜索結果。

讓我解釋:

我的索引中有幾個字段。 其中之一被稱為“縮寫”,並填充有AVZ,JSP,DECT等文本。

為了能夠在純粹搜索“ AVZ”時找到結果,我添加了一個

<copyField source="abbreviation" dest="text"/>

在我的schema.xml中。 字段文本是我的defaultSearchField。

我認為這不是最佳解決方案。 因此,我試圖找出是否可以在所有字段中搜索“ AVZ”,並且如果在字段縮寫中找到了“字符串”,則應增強結果條目(增加分數),以便將其列在結果列表中的第一項。 與使用縮寫:AVZ AVZ作為查詢相同。

我可以想到的另一種可能性是分析查詢。 並且,如果找到了諸如“ AVZ”之類的子字符串,查詢將附加縮寫:AVZ 但是在這種情況下,我必須能夠找出索引了哪些縮寫。 是否可以使用SolrJ從Solr索引中檢索字段的所有可能的項?

最好的問候托比亞斯

如果沒有fieldname:term語法,則可以定義請求處理程序-

<requestHandler name="search" class="solr.SearchHandler" default="true">
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <str name="defType">dismax</str>
   <str name="qf">
      abbreviation^2 text
   </str>
   <str name="q.alt">*:*</str>
   <str name="rows">10</str>
   <str name="fl">*,score</str>
 </lst>
</requestHandler>

這使用了dismax查詢解析器。 您也可以使用edismax。
這將提高結果,並且查詢將是簡單的查詢,因為q = AVZ。

如果僅通過url,則可以提高特定字段的匹配度,例如@ 鏈接

例如

q=abbreviation:AVZ^2 text:AVZ

這將通過縮寫匹配來提高結果的准確性,從而使文檔顯示在頂部。

使用*:*查詢無法獲得dismax的所有結果。
但是,對於所有文檔,都不要傳遞任何q參數。 q.alt=*:*將返回所有文檔。

否則,將defType更新為edismax

<requestHandler name="search" class="solr.SearchHandler" default="true">
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <str name="defType">edismax</str>
   <str name="qf">
      abbreviation^2 text
   </str>
   <str name="q.alt">*:*</str>
   <str name="rows">10</str>
   <str name="fl">*,score</str>
 </lst>
</requestHandler>

Apache Solr 6.4.2:

提高精確短語搜索不起作用: Solrconfig.xml:

顯式的

  <int name="rows">10</int>
  <str name="defType">edismax</str>

  <str name="qf">names^50</str>



  <!-- <str name="df">text</str> -->
</lst>

用於測試的Solr查詢: q=(names:alex%20pandian)&wt=json&debugQuery=on

在調試模式下,它顯示

“ parsedquery_toString”:“ +(((names:alex((names:pandian)^ 50.0)))()”

它僅從第二個單詞開始增加術語。 在這種情況下,只有Pandian被提升,而Alex沒有。

暫無
暫無

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

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