Solr在集合和claculationg分数内的多个字段中搜索

mjqavswn  于 2023-05-17  发布在  Solr
关注(0)|答案(1)|浏览(134)

我需要在solr集合中实现跨多个字段的搜索。我看到了一个解决方案,其中引入了新的字段收集器,其中包括整个集合中所有字段的内容,但是如果我需要根据哪个字段命中来计算分数,该怎么办。例如,“姓名”字段对我来说比“电子邮件”字段重要两倍。在Solr有可能吗?

flmtquvp

flmtquvp1#

edismax (and the older dismax) query handler支持为不同字段中的命中赋予不同的权重。您可以使用参数qf提供要搜索的字段列表,并通过field^<weight>语法给予它们的相对权重:

q=foo&qf=name^2 email

..将在nameemail中查询foo,其中name的权重为两倍高。
您可以将其与catch-all字段(将所有字段的内容复制到要查询的公共字段中的copyField指令)结合使用,其中您可以将特定字段中的命中率高于catch-all字段中的命中率(此处命名为_text_,因为这是默认的):

q=foo&qf=name^4 email^2 _text_

相关问题