我认为这是solr psedo-doc
<doc>
<field name="title"/>
<field name="name"/>
<field name="keywords"/>
</doc>
某些 doc会有关键字“up”,这意味着它们应该首先显示(尽管它们的初始订单位置),当且仅当它们是的部分时搜索结果。
所以我想说:
doc1('title1','Bob, Alice','people, up, couple')
doc2('title2','Smart Phone, Laptop, Bob','devices, electronics')
如果我查询“ title:title2 name:Bob ”,那么我应该首先获得doc1(它具有'up'关键字)。 如果我用“名称:Bob ”进行查询,我仍然会因为同样的原因首先获得doc1。 如果我查询“名称:笔记本电脑”,那么我应该只在我的结果中获得doc2。不应包含doc1,因为它与我的搜索查询不匹配。
有任何建议吗?
答案 0 :(得分:0)
这可以通过Solr的查询时间提升来解决。因此,遵循Solr Relevancy FAQ的指导 - 您可以为所有查询添加额外的提升搜索字词,例如title:title2 name:Bob keywords:up^2
您还可以在每个文档的索引时间,确定是否存在up关键字,然后将其存储在架构中的附加字段(例如布尔值)中,并根据该布尔字段提升查询结果。
答案 1 :(得分:0)
您可以选择执行以下操作:
例如(使用dismax处理程序):
/select?defType=dismax&q=...&bq=keywords:"up"^1000