当我传入一个查询"state:OR"时,lucene给出了一个错误,因为它将"OR"视为boolean子句的关键字,但在这里我实际上是俄勒冈州的缩写,即州.
我已经看到引用OR,所以查询变为'state:'或""使它工作.
但这听起来不是一个非常好的方法,因为我将不得不为lucene使用的每个关键字做一个字符串替换:AND OR NOT和其他?我没有多少
我尝试直接构造查询而不是执行queryParser.parse(),但似乎这不会通过分析器,这是一个大问题.
Lucene 查询语法中只有 3 个独立关键字——AND、OR 和 NOT。(也使用“TO”,但仅在范围查询内被识别。)
您的引用代码只需要识别在应用程序中实际用作术语的 Lucene 关键字(例如上面示例中的“OR”)可能会有所帮助。