使用多个字段的 Solr 搜索查询

Posted

技术标签:

【中文标题】使用多个字段的 Solr 搜索查询【英文标题】:Solr search query using multiple fields 【发布时间】:2022-01-09 17:17:02 【问题描述】:

我的对象具有以下字段:标题、图像、描述、web、类型、url、id 和 _version(食谱集合)。类型是食谱的类别(甜点,第一道菜......)。我想在以下类型中找到所有标题或描述包含“pasta pomodoro”的元素:secondi-piatti(即第二道菜)。我的查询是:(标题:pasta,pomodoro OR 描述:pasta,pomodoro)AND(类型:secondi-piatti)。 标题和描述查询是正确的(因为通过这种方式它还可以找到仅包含“番茄”或“意大利面”的元素),但我不明白为什么在我的结果中我也有以下类型的食谱:primi-piatti(即是,第一门课程),因为我认为使用 AND 它只会找到该类型的元素。有人知道是什么问题吗?

我还必须说,如果我编写相同的查询,但不使用 type:secondi-piatti,而是使用 type:dolci(甜点),它会起作用,因为它只显示包含“pasta”作为甜点的食谱,而不是食谱的第一门课程。总之,这个查询结构遵循我想要的类型,只有当类型是 dolci(甜点)时,所有其他类型(primi、secondi-piatti、antipasti、contorni)都不起作用。

【问题讨论】:

【参考方案1】:

我发现了问题。拥有一个包含两个词条的类型,它会搜索包含一个词条另一个词条的类型,实际上 piatti 既属于 primi-piatti 又属于 secondi-piatti。我必须写:

(标题:pasta,pomodoro OR 描述:pasta,pomodoro) AND type:(secondi AND piatti)

【讨论】:

您可以在引号Title:"pasta pomodoro" 中传递查询以强制Solr 进行短语查询。您还可以传递debugQuery 参数以查看 Solr 如何解释您的查询 (hectorcorrea.com/blog/solr-debugquery/87)

以上是关于使用多个字段的 Solr 搜索查询的主要内容,如果未能解决你的问题,请参考以下文章

在solr中查询具有不同字段的多个集合

Solr Highlighting:如何为同一字段请求多个片段长度?

如何对 Solr 中的多个字段执行嵌套聚合?

solr入门之权重排序方法初探之使用edismax改变权重

索引和查询时多个令牌过滤器的Apache Solr性能问题

Solr查询解析器大全