我在名为“doc”的文本字段中搜索“foo”,后跟“bar”。 我的查询需要匹配文本“foo走进酒吧”但不是“酒吧有foo的地方” 我见过几个类似的问题,但没有具体的答案。 查询不起作用: Q = DOC:FOO *巴 Q = DOC:。/.* FOO 巴 / 这似乎是因为文本字段中的每个单词都是单独标记的。有办法解决这个问题吗? (注意:我无法更改字段类型)
答案 0 :(得分:1)
查看Surround Query Parser和Complex Phrase Query Parser
SurroundQParser启用Surround查询语法,该语法提供 邻近搜索功能。
有两个位置运算符:
w
创建一个有序的跨度查询 并且n
创建了一个无序的。两个运算符都采用数值 表示两个术语之间的距离。默认值为1
,并且 最大值为99
。请注意,不会以任何方式分析查询字符串。
示例:
{!surround} 3w(foo, bar)
此示例将找到术语“foo”和“bar”的文档 不超过3个学期(即不超过2个学期) 他们之间)。
关于复杂词组查询解析器,请注意inOrder
参数,该参数可让您指定匹配关键词的顺序。