私が Lucene で索引付けしている多くの文書では、単語と数字を誤って連結してしまう人がいます。たとえば、「2000 年生まれ」ではなく、「2000 年生まれ」と言うことができます。
数字を含む単語 (in2000and など) を複数の単語 (in 2000 and など) に分割できる Lucene トークナイザーはありますか?
WordDelimiterFilterFactoryを使用して、スキーマに splitOnNumerics=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);