当solr成为结果的一部分时,solr首先显示一些结果

时间:2011-09-08 14:19:20

标签: solr

我认为这是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,因为它与我的搜索查询不匹配。

有任何建议吗?

2 个答案:

答案 0 :(得分:0)

这可以通过Solr的查询时间提升来解决。因此,遵循Solr Relevancy FAQ的指导 - 您可以为所有查询添加额外的提升搜索字词,例如title:title2 name:Bob keywords:up^2

您还可以在每个文档的索引时间,确定是否存在up关键字,然后将其存储在架构中的附加字段(例如布尔值)中,并根据该布尔字段提升查询结果。

答案 1 :(得分:0)

您可以选择执行以下操作:

  • 函数查询/提升查询(在dismax处理程序中)
  • 在索引时间(提升文档)
  • 将'up'关键字提取到其他字段并按此字段排序,而不是得分

例如(使用dismax处理程序):

 /select?defType=dismax&q=...&bq=keywords:"up"^1000