2017-04-27 56 views
1

我在名为“doc”的文本字段中搜索“foo”后跟“bar”。 我的查询需要匹配文字“foo走进酒吧”,但不是“酒吧有地方为富” 我见过一些类似的问题,但没有具体的答案。 查询不起作用: q = doc:foo * bar q = doc:/.* foo。 吧。/ 看起来这是因为文本字段中的每个单词都单独标记。有没有办法解决这个问题? (注:我不能改变字段类型)Solr通配符在文本字段中的多个单词查询

+0

什么是您使用的分词器? – root545

回答

1

看一看在Surround Query Parser并在Complex Phrase Query Parser

的SurroundQParser使环绕查询语法,它提供 邻近搜索功能。

有两个位置运算符:w创建一个有序跨度查询 和n创建一个无序的运算符。两个操作员都用数字值 来表示两个词之间的距离。默认值是1,而 最大值是99

请注意,不以任何方式分析查询字符串。

实施例:

{!surround} 3w(foo, bar) 

这个例子会发现其中术语“foo”和“棒”是 不超过3个方面彼此远离(即,不超过2个术语 它们之间的文件)。

对于复杂短语查询分析器,在inOrder参数,让您指定匹配的关键字的顺序注意。

相关问题