Solr中的查询问题

Solr中的查询问题,solr,Solr,我们使用Solr搜索商店索引和产品索引。当前,商店有一个字段Shop\u keyword,其中还包含分配给它的产品的关键字。商店关键字用空格分隔。因此,如果有一个产品的关键字为“苹果”,另一个关键字为“橙色”,则搜索具有苹果和橙色的商店将返回这些产品的商店 但是,这是不正确的,因为我们希望搜索具有苹果和橙色的商店会返回同时具有“苹果”和“橙色”作为关键字的产品的商店 我们试图解决这个问题,通过使商店关键字具有多值性,并将商店每种产品的关键字指定为商店关键字中的新值。然而,正如在另一篇文章中确认的

我们使用Solr搜索商店索引和产品索引。当前,商店有一个字段
Shop\u keyword
,其中还包含分配给它的产品的关键字。商店关键字用空格分隔。因此,如果有一个产品的关键字为“苹果”,另一个关键字为“橙色”,则搜索具有
苹果和橙色的商店将返回这些产品的商店

但是,这是不正确的,因为我们希望搜索具有
苹果和橙色的商店
会返回同时具有“苹果”和“橙色”作为关键字的产品的商店

我们试图解决这个问题,通过使商店关键字具有多值性,并将商店每种产品的关键字指定为商店关键字中的新值。然而,正如在另一篇文章中确认的那样,Solr不支持“所有单词都必须匹配” 在多值字段的相同值中”

(希望我能解释清楚)

我们该怎么办?理想情况下,我们不应该大幅改变我们的搜索基础设施

谢谢


Krt_Malta

我假设shop_关键字是一个文本字段

如果您只在该字段中搜索(
shop\u关键字:Apple AND Orange
),则对苹果和橙色的
关键字搜索将只返回同时包含苹果和橙色的shop\u关键字。例如,您应该只看到包含以下内容的结果:

Apple Orange
Apple Lime Orange Tree
而不是:

Apple Mango
(我可以在本地Solr实例上用文本字段确认这一点)

但是,您将看到包含以下内容的结果:

Apple Orange
Apple Lime Orange Tree
(其中“Orange Tree”是一个单词,但有空格)

从你发布的链接来看,似乎这就是问题所在。所以你真正的问题是你的关键字中有空格,Solr也使用空格作为分隔符,在这种情况下,这里列出的技术解决方案是我唯一知道的。然而

如果您对这些术语有控制权,它们不用于免费文本搜索(或谷歌),您可以考虑从关键字中删除空格,并将引号添加到搜索中。这将解决您的问题:

shop\u关键词:“苹果”和“橙色”

不会返回“橘子树”

如果你走这条路,你可以使用一个单独的字段来索引自由文本搜索和其他非编程目的的术语

不太理想,但我希望这能有所帮助