我们可以对solr同义词txt文件中的单词应用模糊

时间:2016-06-27 07:16:17

标签: solr solrj

我们需要搜索与同义词匹配的记录。例如,如果文档已编入索引,其中的字段的值包含不同的记录最差错误。我有一个synonym.txt配置了单词最差可怕作为同义词,文件的字段类型是text_general,这是在分析器类型查询中配置了同义词过滤器。

当用户使用 dreadful 查询时,会从索引文档中返回错误最差的记录。当我使用fuzzy搜索dreadf~2时,不返回任何记录,期望错误最差的记录。怎么可以存档。我们是否可以实现自定义代码来实现此要求,因为用户甚至可能输入错字作为同义词。

以下是schema.xml中的字段配置

<fieldType name="text_general" class="solr.TextField"
   positionIncrementGap="100" multiValued="true">
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
         <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>   </fieldType>

   <field name="emotion" type="text_general"/>

1 个答案:

答案 0 :(得分:0)

感谢您的架构。如果输入dreadf~2,则不会触发同义词,因为dreadf与任何内容都不匹配。

如果您调试查询,您会看到这是可怕的:

+title:"(worst dreadful) bad"

这对于dreadf~2:

name="parsedquery_toString">+title:"dreadf 2"</str>

您可能需要dreadf的同义词或搜索dreadful~2

请注意,此链接讨论了查询时间同义词扩展的一些缺点:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory