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

dfuffjeb  于 2022-11-05  发布在  Solr
关注(0)|答案(2)|浏览(160)

我们需要搜索与同义词匹配的记录。例如,如果文档已编制索引,其中某个字段的值位于不同的记录worstbad中。我有一个synonym.txt,其中配置了单词badworstdawful作为同义词,并且文件的字段类型为text_general,该文件配置了分析器类型查询中的同义词过滤器。
当用户使用可怕的查询时,从索引文档中返回具有最坏的记录。当我使用模糊搜索可怕的f ~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"/>
ct2axkht

ct2axkht1#

如果你输入了readf ~2,同义词将不会被触发,因为readf不匹配任何内容。
如果您调试查询,您将看到以下可怕的结果:

+title:"(worst dreadful) bad"

对于恐怖分子2:

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

你可能需要同义词的可怕或搜索可怕的~2
请注意,此链接讨论了查询时间同义词扩展的一些缺点:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

laximzn5

laximzn52#

我有一个类似的情况。在我的电影搜索项目中,我定义我的同义词为

doctor,dr,dr.

我的原始查询是

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

不幸的是,这是行不通的,因为如果我输入“医生”作为搜索词,它不会产生“卡利加里博士的内阁”。
我所做的是将查询更改为:

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表达式的第二部分现在是匹配同义词的部分。

相关问题