Lucene查询带空格的字段语法

use*_*584 5 lucene

我正在尝试执行两个Lucene查询.第一个有效.第二个没有.我的第一个查询看起来像这样:

level:"dangerous"
Run Code Online (Sandbox Code Playgroud)

我的第二个查询看起来像这样:

IP address:"11.22.333.444"
Run Code Online (Sandbox Code Playgroud)

我没有收到查询错误.但是,我知道有匹配IP地址的文档.出于这个原因,我怀疑"IP"和"地址"之间的空间是导致问题的原因.但是,我不是Lucene的专家.所以,我不确定我是否正确.

当我使用PostMan查看我的结果集时,我可以看到一个包含如下字段的文档:

"IP address": "11.22.333.444"
Run Code Online (Sandbox Code Playgroud)

如果我的查询是正确的,有人可以告诉我吗?或者,如果我遗失了什么?

谢谢!

fem*_*gon 6

是的,那个空间就是问题所在.

字段名称中的空格是允许的,但与查询解析器语法冲突.您基本上运行两个子查询组合为SHOULD子句(即,a OR):

  • IP
  • address:"11.22.333.444"

您可以在空格前使用单个斜杠来逃避空间,例如:

IP\ address:"11.22.333.444"
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑原始帖子中有一种类型。诀窍是使用一个斜杠来逃避空间,然后它就可以工作了。如:IP\地址:... (2认同)