Raz*_*aza 1 fuzzy-search solrnet
我正在搜索solr中的"文本"字段,我正在寻找一种方法来匹配(例如)"anamal"和"animal".我的"text"字段的架构如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
使用SolrNet如何执行模糊搜索以匹配"anamal"和"animal"?
看来你可以使用Lucene"〜"模糊搜索,但有一招!如果保持不变,SolrNet默认会为你转义波形符,但可以关闭它...所以这应该为你做的诀窍:
var query = new SolrQueryByField("myField", "some value~");
query.Quoted = false;
Run Code Online (Sandbox Code Playgroud)
警告似乎是(至少现在)你必须使用字段查询,SolrQuery上不存在相同的参数......但这是有道理的我猜.