关键字(OR,AND)在Lucene搜索

Are*_*eca 18 java lucene

我在我的门户网站(基于J2EE)中使用Lucene进行索引和搜索服务.

问题是关于Lucene的关键字.当您在搜索查询中使用其中一个时,您将收到错误.

例如:

searchTerms = "ik OR jij"
Run Code Online (Sandbox Code Playgroud)

这很好,因为它会搜索"ik""jij"

searchTerms = "ik AND jij"
Run Code Online (Sandbox Code Playgroud)

这很好,它搜索"ik""jij"

但是当你搜索:

searchTerms = "OR"
searchTerms = "AND"
searchTerms = "ik OR"
searchTerms = "OR ik"
Run Code Online (Sandbox Code Playgroud)

等等,它将失败并出现错误:

Component Name: STSE_RESULTS  Class: org.apache.lucene.queryParser.ParseException  Message: Cannot parse 'OR jij': Encountered "OR" at line 1, column 0. 
Was expecting one of: 
... 

这是有道理的,因为这些单词是Lucene的关键字可能是保留的,并将充当关键字.

在荷兰语中,"OR"这个词很重要,因为它对"Ondernemings Raad"有意义.它被用在许多文本中,需要找到它.例如,"或"确实有效,但不返回与术语"OR"匹配的文本.我怎样才能让它可以搜索?

如何逃避关键字"或"?或者,我如何告诉Lucene将"或"视为搜索词而不是关键词.

bee*_*tra -1

当“OR”是搜索词时,您可以转义它,或者为不同的语法编写自己的查询解析器。除了解析器之外,Lucene 还提供了广泛的查询 API,您可以使用它轻松支持自己的查询语法。