Lucene中的字母与数字分开

时间:2012-06-04 20:01:00

标签: java lucene

在我使用Lucene索引的许多文档中,人们不小心将单词与数字连接起来。例如,人们可以说:“我出生于2000年”,而不是“我出生于2000年”。

是否有任何Lucene标记器可以将带有数字的单词(例如in2000and)分成几个单词(例如2000和)?

2 个答案:

答案 0 :(得分:2)

您可以使用WordDelimiterFilterFactory并将splitOnNumerics = 1 param添加到您的架构中。

答案 1 :(得分:1)

我没有使用Solr。所以我从Solr。下载了WordDelimiterFilter和WordDelimiterIterator,并将此代码添加到我的自定义分析器中:



    final Tokenizer source = new StandardTokenizer(matchVersion, reader);
    TokenStream result = new StandardFilter(matchVersion, source);
    int flags = WordDelimiterFilter.SPLIT_ON_NUMERICS
                | WordDelimiterFilter.GENERATE_NUMBER_PARTS
                | WordDelimiterFilter.GENERATE_WORD_PARTS;
    result = new WordDelimiterFilter(result, flags, null);