0

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

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

所以q.op=AND,但跨越两个独立的领域。我应该如何编写查询?

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

4

1 回答 1

3

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

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

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

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

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

于 2013-05-15T04:48:17.107 回答