【发布时间】:2009-08-21 11:00:06
【问题描述】:
我在我的门户(基于 J2EE)中使用 Lucene 来提供索引和搜索服务。
问题在于 Lucene 的关键字。当您在搜索查询中使用其中一个时,您会收到错误消息。
例如:
searchTerms = "ik OR jij"
这很好用,因为它会搜索"ik" 或"jij"
searchTerms = "ik AND jij"
这很好用,它会搜索 "ik" 和 "jij"
但是当你搜索时:
searchTerms = "OR"
searchTerms = "AND"
searchTerms = "ik OR"
searchTerms = "OR ik"
等等,会失败并报错:
组件名称:STSE_RESULTS 类:org.apache.lucene.queryParser.ParseException 消息:无法解析“OR jij”:在第 1 行第 0 列遇到“OR”。 期待其中之一: ...这是有道理的,因为这些词是 Lucene 的关键字,可能是保留的,并将充当关键字。
在荷兰语中,“OR”这个词很重要,因为它具有“Ondernemings Raad”的含义。它在许多文本中使用,需要找到它。例如,“或”确实有效,但不返回与“或”一词匹配的文本。如何使其可搜索?
如何转义关键字“或”?或者我如何告诉 Lucene 将“或”视为搜索词而不是关键字。
【问题讨论】:
-
Lucene 的哪个版本? AFAIk,布尔查询适用于 BooleanClause.Occur.SHOULD |必须 |必须不(或 | 和 | 不)分别。
-
在 Luke 中进行搜索 ==> getopt.org/luke