1

Lucene 如何支持通配符搜索?

我想搜索以 ox 开头的单词,我正在搜索单词,ox*但它也返回了意想不到的结果,例如anti-oxide- 但我不希望它作为结果。

4

2 回答 2

0

这与您的数据的分析方式有关。StandardAnalyzer 将分隔空格和标点符号的术语(以及许多其他规则)。标准分析器通常非常适合全文。如果它不适合您的特定需求,可以使用许多其他分析仪。如果没有更多关于你打算完成的信息,我真的不能推荐一个特定的。

于 2013-05-15T06:06:34.000 回答
0

根据 Lucene FAQ ,您的查询ox*应该只匹配以 ox 开头的术语。

因为 将StandardTokenizer字符视为分隔符,所以一个单词 likeanti-oxide被分成两个单词 -anti因此在您搜索时oxide匹配。anti-oxideox*

您有 2 个选项可以更改此行为:

  1. 覆盖默认的 Tokenizer 并编写自己的以满足您的需求
  2. 对文本进行丑陋的预处理以替换/删除此类分隔符。这可能不是一个理想的解决方案
于 2013-05-15T06:06:43.277 回答