在我使用Lucene索引的许多文档中,人们不小心将单词与数字连接起来。例如,人们可以说:“我出生于2000年”,而不是“我出生于2000年”。
是否有任何Lucene标记器可以将带有数字的单词(例如in2000and)分成几个单词(例如2000和)?
答案 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);