【问题标题】:How can I search for all terms across two fields in Solr?如何在 Solr 的两个字段中搜索所有术语?
【发布时间】:2025-12-16 02:30:01
【问题描述】:

查询中的所有术语都应出现在字段的组合内容中。例如。当我搜索术语组合时,应返回文档:

  • 所有术语都出现在“描述”字段、“元数据”字段或这两个字段中
  • 或所有术语都分布在两个字段中(例如,一个术语出现在“描述”字段中,其余两个术语出现在“元数据”字段中)

所以q.op=AND 但跨越两个单独的字段。我应该如何编写查询?

如果我将索引更改为使用单个多值字段而不是两个单独的字段会怎样,这会使这种情况更容易吗?

【问题讨论】:

    标签: solr full-text-search


    【解决方案1】:

    是的,您可以使用copyfield 将这两个字段组合成一个多值字段。

    <copyField source="metadata" dest="metadata_desc" />
    <copyField source="descrition" dest="metadata_desc" />
    

    查询可以用q=metadata_desc:"some search"&amp;q.op=AND构成

    对于q.op,搜索所有术语都是强制性的,并且应该与要返回的文档匹配。默认为OR

    这将负责在任一字段以及跨字段进行匹配。

    【讨论】: