我正在搜索solr中的“文本”字段,我正在寻找一种方法来匹配(例如)“anamal”和“animal”。我的“文本”字段的架构如下所示:
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
使用SolrNet如何进行模糊搜索以将“anamal”与“animal”匹配?
答案 0 :(得分:5)
看来你可以使用Lucene“〜”模糊搜索,但有一招!如果保持不变,SolrNet默认会为你丢弃波形符,但可以关闭它......所以这应该可以帮到你:
var query = new SolrQueryByField("myField", "some value~");
query.Quoted = false;
警告似乎是(至少现在)你必须使用字段查询,SolrQuery上不存在相同的参数......但这是有道理的我猜。
答案 1 :(得分:0)
您可以使用索引时间同义词执行此操作,有关如何进行此设置的详细信息,请参阅Solr Wiki - SynonymFilterFactory。