解析查询时Lucene错误:无法解析&#39;:遇到&#34; <eof>&#34;在第1行,第0列

时间:2016-09-01 16:52:15

标签: java lucene query-parser

我想使用Lucene查询解析器解析一些文本,对文本进行基本的文本预处理。我使用了以下代码行:

<wsdl:operation name="yourOperation">
  <soap:operation soapAction="yourSoapAction" ... />

但是,我收到了一个错误:

Analyzer analyzer = new EnglishAnalyzer();
QueryParser parser = new QueryParser("", analyzer);
String text = "...";
String ret = parser.parse(QueryParser.escape(text)).toString();

2 个答案:

答案 0 :(得分:2)

使用Query.escape()删除特殊字符。但是它不会删除

  

与,非或

是在lucene搜索中使用的关键字。

有两种处理方法:

  1. 在查询字符串中替换AND,NOT或OR。
  2. 将查询字符串转换为小写。

转换为小写字母可以解决此问题,因为只有大写的AND,NOT和OR是关键字。它们被视为小写的普通单词。

答案 1 :(得分:1)

对于那些遇到这个问题的人,我意识到我的解析器会抛出“&#34; NOT&#34;”这个词的异常,即使在转义之后也是如此。我不得不用其他字手动替换它。