假设我有字段
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被排除在外。
如何实现这一目标?
答案 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。
据我所知,查询提升只有在您实际查询要提升的内容时才会起作用(直观)。这就是我在查询中添加最后两部分的原因。