我有一个使用DataImportHandler的相当直接的SOLR搜索实现。其中一个字段是企业的名称。它创建一个可搜索的字段,其中包含企业名称和描述。
问题是,搜索一家名为C.E.D.的公司是找不到它的。我知道它在那里。更一般的搜索确实会返回结果。
有趣的是,指数中还有一家名为CED的公司。搜索CED不会返回该公司,但搜索CED会。但是,搜索CED不会返回公司CED。
写这篇文章时,我意识到我可能需要做的是改变企业名称字段,这样它就会被原样使用,而过滤器不会混淆单词或标点符号的实际组合。
WhitespaceTokenizerFactory的正常配置可以为您工作。
这将在空白和小写文本上创建标记,并将匹配索引项。
C.E.D将匹配C.E.D和C.E.D
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
如果你想让C.E.D, c.e.d or ced
匹配C.E.D or c.e.d or ced
,你需要检查WordDelimiterFilterFactory过滤器