繁体   English   中英

Solr 搜索:使用“AND”搜索在多个字段中搜索

[英]Solr Search: Searching in multiple fields with "AND" Search

我是一家电子商务公司搜索引擎的产品负责人,我目前正在“发现”Solr - 因为我以前从未使用过这个引擎。 如果我没有使用正确的术语,请提前抱歉。

我有以下典型用例:用户寻找“Apple iPhone”。 数据集包含诸如品牌 = Apple、产品名称 = iPhone、产品类型 = 智能手机、类别 = 智能手机等字段。

在我们当前的设置中,根据我们的外部顾问的说法,引擎提供包含苹果或 iPhone 8 的所有结果。为了首先获得所有苹果 iPhone 作为结果,他们建议我们创建一个新的索引属性,其中包含品牌、产品名称、产品类型和类别合二为一,并用这个新属性替换单个属性(例如品牌、产品名称等)。 根据他们的说法,Solr 无法提供 AND 搜索(“在其数据集中查找所有具有苹果和 iPhone 的产品”)。

这是正确的,你会以同样的方式处理这个用例吗?

我很怀疑 Solr 无法在单独的属性中查找 Apple iPhone,然后提供在任一索引属性中都包含这两个术语的结果。 他们推荐的更改也意味着我们失去了粒度,因为多个字段被连接为一个。 这也意味着我们将无法再单独提升每个属性,因为它们已被新属性取代。

我知道我的请求可能会被视为“新手”问题,但作为非开发人员,我仍然无法弄清楚,顾问似乎真的认为这是处理此用例的唯一方法。

感谢大家的帮助!

没有任何理由失去粒度; 通常,您需要将字段(使用copyField指令)复制到一个或多个字段中以支持不同类型的查询(这也允许您使用不同的权重对不同字段中的命中进行评分)。 这样您就可以保留所有原始字段,并且您有一个新的、单独的字段,它将所有内容作为单个搜索字段。

根据您的查询用例,您可能只需要edismax查询处理程序和qf=Brand ProductName ProductType来查询这些字段,并设置q.op=AND (或mm=<factor> )以获得您想要的行为。 如果您无法使用qf跨字段匹配,请使用将不同字段复制到其中的字段作为基本匹配(即添加SearchField作为qf的最后一个字段,如上所示),然后提高品牌/名称/等等。 因此,仅“apple”的精确匹配得分更高。

究竟什么被认为是匹配将取决于该字段发生的标记化和过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM