Java 如何解析使用spanNot和SpanAr的lucene字符串查询

Java 如何解析使用spanNot和SpanAr的lucene字符串查询,java,lucene,Java,Lucene,如果我将以下lucene查询作为字符串,是否可以使用现有的lucene库来解析它 +spanNot(span([text:word1,text:word2],10,true),text:mydelimiter) 我正在使用lucene 3.0.0。我在core中尝试了QueryParser,它没有错误,但是创建了一个不正确的布尔查询。我还在lucene contrib和org.apache.lucene.queryParser.round.parser.queryParser中尝试了Standa

如果我将以下lucene查询作为字符串,是否可以使用现有的lucene库来解析它

+spanNot(span([text:word1,text:word2],10,true),text:mydelimiter)

我正在使用lucene 3.0.0。我在core中尝试了QueryParser,它没有错误,但是创建了一个不正确的布尔查询。我还在lucene contrib和org.apache.lucene.queryParser.round.parser.queryParser中尝试了StandardQueryParser(也提供BooleanQuery),结果出现了一个错误(遇到“”(“”)(“”…)

在代码中构造等价查询是我唯一的选择吗


(仅供参考,我的总体目标是在索引之前,在文档中用“mydelimiter”替换句子结束句点,从而在同一句子中找到任意顺序的术语。)

来自Lucene in action book:

QueryParser不支持任何SpanQuery类型,但是 Lucene的contrib模块中的环绕查询parser不支持

下面是一个环绕解析器语法示例:

aa NOT bb NOT cc – same effect as: (aa NOT bb) NOT cc
and(aa,bb,cc) – aa and bb and cc
99w(aa,bb,cc) - ordered span query with slop 98
99n(aa,bb,cc) – unordered span query with slop 98

看起来您必须更改语法以符合此语法,并使用环绕语法分析器或扩展QueryParser。

我在问题中提到,我尝试了此语法,但出现了错误。我的查询字符串语法可能有错误吗?是的,书中的示例有不同的语法。谢谢,我会看看我能不能找出语法通过svn中针对contrib模块的单元测试,我无法在不使用环绕解析器语法的情况下将一个span嵌套在span中。这是可能的,但我不这么认为。我最终求助于为查询定义自己的字符串格式,并扩展查询解析器以编程方式构造查询。