Solr - 仅在找到其他字段时包含字段

时间:2014-09-04 13:44:49

标签: search solr field relevance

假设我有字段

textFieldA
textFieldB
specialC

在我的索引中。现在我想用

查询这些内容
textFieldA:"searchVal" textFieldB:"searchVal" specialC:"somecode"

但是如果至少有一个其他字段也匹配,我只想提高specialC上的匹配。

实施例

DocumentA:
 textFieldA:"This is a test" textFieldB:"for clarification" specialC:"megacode"

DocumentB:
 textFieldA:"Doesnt contain" textFieldB:"searched word here" specialC:"megacode"

DocumentC:
 textFieldA:"But this again" textFieldB:"contains test" specialC:"supercode"

现在用

搜索示例时
textFieldA:"test" textFieldB:"test" specialC:"supercode"

我想要结果

DocumentC
DocumentA

文件C的排名最高,但文件B被排除在外。

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

q=textFieldA:"test" OR textFieldB:"test" OR textFieldA:"test" AND specialC:"supercode" OR textFieldB:"test" AND specialC:"supercode"&bq=(specialC:"supercode")^100 

应按所需顺序仅返回DocumentC和DocumentA。 bq表示提升一个字段/字段值,请在此处查看更多https://wiki.apache.org/solr/SolrRelevancyFAQ#How_do_I_give_a_negative_.28or_very_low.29_boost_to_documents_that_match_a_query.3F

据我所知,查询提升只有在您实际查询要提升的内容时才会起作用(直观)。这就是我在查询中添加最后两部分的原因。