SOLR查询排除筛选

3
我在查询索引时遇到了一个问题,常用的搜索词汇恰巧也是公司名称,在大多数文档中穿插出现。我该如何在不影响包含部分业务名称的搜索排名的情况下排除结果中的企业名称?
例如:Bobs Automotive Supply 是公司名称。
当某人搜索汽车或供应时,如何包含相关结果而不返回索引中的每个文档?
我尝试过 "-'Bobs Automotive Supply' +'search term'" 但这似乎会排除带有"Bobs Automotive Supply"的任何文档,并且对于搜索“supply”或“automotive”并不是很有效。
提前致谢。
3个回答

1

根据第一个答案的额外澄清,这里是第二个答案。

有几个选项。

  1. 将商业名称作为StopWords添加到StopWordFilter中。这将完全阻止Solr进行索引。使用它们进行搜索实际上只会搜索那些不在商业名称中的单词。

  2. 依靠Solr由于术语频率而应用的固有评分。听起来这些术语将经常出现在索引中。对它们的查询仍将返回文档,但如果用户查询其他不太常见的术语,则这些术语将获得更高的分数。

  3. 对包含商业名称的文档应用低查询增强(不完全是负面的,但比其他文档低)。这在Solr相关性FAQ中有所涵盖http://wiki.apache.org/solr/SolrRelevancyFAQ#How_do_I_give_a_negative_.28or_very_low.29_boost_to_documents_that_match_a_query.3F


0

编辑:问题更新使此内容无关。为了纪念,我将其保留在这里。:)

这就是Solr文档具有不同字段的原因。

在这种情况下,似乎存在一个“页脚”字段,该字段与文档中的“正文”字段分开。当执行搜索时,它们只会针对正文进行,而不包括来自页脚的数据。您甚至可以有第三个字段,即“原始内容”字段,其中包含用于显示目的的原始副本。您不会搜索它,只需存储以供以后使用。

重要的是在模式中创建两个单独的字段,并确保索引那些您想要能够搜索的字段。


问题在于商业名称穿插在整个文档中。似乎没有一种简单的方法通过自定义字段来排除它。 - renhack
请更新您的问题以反映出它的位置。您只描述了它在页脚中。 - rfeak

0

你知道文章是否与商业名称相关联或派生出来的吗?如果是这样,你可以创建另一个字段,然后使用过滤查询排除与商业名称匹配的实体。类似于:

q=search_term&fq=business_name:(NOT search_term)

使用子查询可能会对此有所帮助,或者只需将结果降低而不是过滤掉。


自定义字段并不是一个选项,因为这些营销材料中包含了无数次的名称。你能降低一个短语的权重而不影响短语中的单个术语吗?如果可以的话,我可以创建一个排除字段。 - renhack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接