簡體   English   中英

Solr Boost查詢按結果是否先提升然后再由另一個字段排序

[英]Solr boost query sort by whether result is boosted then by another field

我正在使用Solr在我們的一個核心上運行查詢。 假設我的文檔有兩個字段:ID和Name。 我還有一個單獨的ID列表,這些ID是我從數據庫中獲取並傳遞給查詢以提高某些結果的。

如果文檔在查詢中返回並且ID在列表中,它將轉到結果的頂部;如果文檔在查詢中返回並且ID在列表中沒有,則它會位於列表中的下面。 。 前者來自“助推器”。 我的查詢是這樣的-http:// mysolrserver:8983 / solr / MyCore / MyQueryHandler?q = Smith&start = 0&rows = 25&bq = Id%3a(36 + OR + 76 + OR + 90 + OR + 224 + OR + 391 )

我能夠使boost查詢工作,但我需要將boosted結果按名稱按字母順序排列,然后將在非boosted結果下按名稱按字母順序排列。 我需要知道用戶使用的&sort =參數。 &sort = score%20desc,Name + asc不起作用。 我看了很多文檔,但我仍然不知道是否可行。 任何幫助表示贊賞。 謝謝!

Solr版本是6.0.1。 我實際上是在使用SolrNet與Solr交互,但是如果我知道url的&sort =參數值需要是什么,我想我可以弄清楚SolrNet部分。

與您的需求最接近的匹配項是查詢海拔高度組件[1]。 在您的特定情況下,我將首先根據自己的需求對我的ID進行排序(例如,按名稱對它們進行排序),然后將其維護在elevate.xml中。

在查詢時,您可以使用“ forceElevation”參數來強制標高,然后按名稱對其余結果進行排序。

[1] https://cwiki.apache.org/confluence/display/solr/The+Query+Elevation+Component

我通過消除boost查詢來解決了。 我使用“存在”功能添加了排序查詢,並將其傳遞給ID子查詢。 存在返回一個布爾值進行排序,然后我將該名稱添加為第二種排序。 完美的作品!! 該URL如下所示:

http://mysolrserver:8983/solr/MyCore/MyQueryHandler?q=Smith&start=0&rows=25&sort=exists(query({!v=%27Id:(36+OR+76+OR+90+OR+224+OR+391)%27}))%20DESC,%20Name%20ASC

暫無
暫無

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

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