4

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

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

4

2 回答 2

2

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

于 2012-06-05T07:29:09.183 回答
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);

于 2012-06-05T14:09:54.427 回答