1
我在名为“doc”的文本字段中搜索“foo”后跟“bar”。 我的查询需要匹配文字“foo走进酒吧”,但不是“酒吧有地方为富” 我见过一些类似的问题,但没有具体的答案。 查询不起作用: q = doc:foo * bar q = doc:/.* foo。 吧。/ 看起来这是因为文本字段中的每个单词都单独标记。有没有办法解决这个问题? (注:我不能改变字段类型)Solr通配符在文本字段中的多个单词查询
我在名为“doc”的文本字段中搜索“foo”后跟“bar”。 我的查询需要匹配文字“foo走进酒吧”,但不是“酒吧有地方为富” 我见过一些类似的问题,但没有具体的答案。 查询不起作用: q = doc:foo * bar q = doc:/.* foo。 吧。/ 看起来这是因为文本字段中的每个单词都单独标记。有没有办法解决这个问题? (注:我不能改变字段类型)Solr通配符在文本字段中的多个单词查询
看一看在Surround Query Parser并在Complex Phrase Query Parser
的SurroundQParser使环绕查询语法,它提供 邻近搜索功能。
有两个位置运算符:
w
创建一个有序跨度查询 和n
创建一个无序的运算符。两个操作员都用数字值 来表示两个词之间的距离。默认值是1
,而 最大值是99
。请注意,不以任何方式分析查询字符串。
实施例:
{!surround} 3w(foo, bar)
这个例子会发现其中术语“foo”和“棒”是 不超过3个方面彼此远离(即,不超过2个术语 它们之间的文件)。
对于复杂短语查询分析器,在inOrder
参数,让您指定匹配的关键字的顺序注意。
什么是您使用的分词器? – root545