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

Can we apply fuzzy for the words in solr synonym txt file

如果文档被索引,我们需要搜索与 synonym.For 示例匹配的记录,其中一个字段的值在不同的记录 worst不好。我有一个 synonym.txt 配置了 words bad, worst,dreadful 作为同义词文件字段类型为text_general,在analyzer类型查询中配置同义词过滤。

当用户查询 可怕 时,returns 记录具有 最差 来自索引文档。当我用 fuzzy 搜索 dreadf~2 时,没有 return 任何记录,期望 badworst 的记录。这怎么可能存档。我们能否实现自定义代码来实现此要求,因为用户甚至可能输入同义词的拼写错误。

下面是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"/>

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

如果你调试查询你会看到这个可怕的:

+title:"(worst dreadful) bad"

这是可怕的~2:

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

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

注意这篇link讨论了查询时同义词扩展的一些缺点:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

我遇到的情况与此非常相似。在我的电影搜索项目中,我将我的同义词定义为

doctor,dr,dr.

我原来的查询是

http://localhost:8983/solr/bestFilms/select?q=default_search_field:(doctor~2)&fl=title,director,year_released,leading_actors,description

不幸的是,这行不通,因为如果我输入“医生”作为搜索词,它不会生成“Caligari 博士的内阁”。

我所做的是将查询更改为:

http://localhost:8983/solr/bestFilms/select?q=default_search_field:(doctor~2%20OR%20doctor)&fl=title,director,year_released,leading_actors,description

本质上是(括号中的剥离编码)

doctor~2 OR doctor

产生令人满意的结果,所以我想 OR 表达式的第二部分现在是匹配同义词的部分。