Lucene的错误,同时分析查询:无法解析“”:遇到“ ”位于第1行,第0列(Lucene e

2019-09-26 08:02发布

我想分析使用Lucene查询分析器开展对文本基本文本预处理一些文本。 我用下面的代码行:

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

但是,我得到一个错误:

Exception in thread "main" org.apache.lucene.queryparser.classic.ParseException: Cannot parse '': Encountered "<EOF>" at line 1, column 0.

Answer 1:

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

AND,NOT,OR

这是在Lucene搜索使用的关键字。

有两种方法来对付它:

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

转换为小写解决问题,因为只有资本化,没有或关键字。 他们被视为小写正规字。



Answer 2:

对于那些谁面对这个问题,我意识到,我的解析器抛出异常单词“NOT”,甚至逃脱后。 我有其他词来手动替换它。



文章来源: Lucene error while parsing Query: Cannot parse '': Encountered “” at line 1, column 0