执行Lucene通配符搜索

时间:2013-05-15 05:36:03

标签: java search lucene

Lucene如何支持外卡搜索?

我想搜索以牛开头的单词 我正在使用ox*搜索单词,但它也会返回anti-oxide之类的意外结果 - 但我不希望结果如此。

2 个答案:

答案 0 :(得分:0)

这与您的数据分析方式有关。 StandardAnalyzer将分隔空格和标点符号(many other rules之间)。标准分析器通常非常适合全文。如果它不符合您的特定需求,many other analyzers可用。如果没有关于你打算完成什么的更多信息,我真的不能推荐一个特定的。

答案 1 :(得分:0)

根据Lucene FAQ,您的查询ox*应仅匹配以牛开头的字词。

由于StandardTokenizer考虑了hyphen as a delimiter,因此anti-oxide这样的词会被分为两个词 - antioxide,因此匹配anti-oxide }当您搜索ox*时。

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

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