0

我有一个使用 DataImportHandler 的相当直接的 SOLR 搜索实现。其中一个字段是企业名称。它创建了一个可搜索的字段,其中包含企业名称和描述。

问题是搜索一家名为 CED 的公司不会找到它。我知道它在那里。更一般的搜索确实会返回结果。

有趣的是,指数中还有一家名为 CED 的公司。搜索 CED 不会返回该公司,但搜索 CED 会。但是,搜索 CED 不会返回公司 CED

在写这篇文章时,我意识到我可能需要做的是更改公司名称字段,以便它按原样使用,并且没有过滤器与单词或标点符号的实际组合混淆?

4

1 回答 1

2

使用 WhitespaceTokenizerFactory 的正常配置可以为您工作。
这将在空格和小写文本上创建标记,并匹配索引项。
CED 将匹配 CED 和 ced

<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过滤器

于 2013-05-29T10:45:09.117 回答