如何在lucene查询中正确转义OR和AND?

ted*_*ddy 7 lucene analyzer

当我传入一个查询"state:OR"时,lucene给出了一个错误,因为它将"OR"视为boolean子句的关键字,但在这里我实际上是俄勒冈州的缩写,即州.

我已经看到引用OR,所以查询变为'state:'或""使它工作.

但这听起来不是一个非常好的方法,因为我将不得不为lucene使用的每个关键字做一个字符串替换:AND OR NOT和其他?我没有多少

我尝试直接构造查询而不是执行queryParser.parse(),但似乎这不会通过分析器,这是一个大问题.

ada*_*dam 7

有许多方法可以逃脱这种情况,清洁工是逃避AND,OR,&NOT与前导反斜杠,例如:

\\AND \\OR \\NOT

或者,代码解析器不会将它们的小写等价物解析为运算符


Mar*_*her 4

Lucene 查询语法中只有 3 个独立关键字——AND、OR 和 NOT。(也使用“TO”,但仅在范围查询内被识别。)

您的引用代码只需要识别在应用程序中实际用作术语的 Lucene 关键字(例如上面示例中的“OR”)可能会有所帮助。