1

我正在 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”匹配?

4

2 回答 2

5

貌似可以用Lucene的“~”模糊搜索,不过有个窍门!如果保持不变,SolrNet 默认会为您转义波浪字符,但可以将其关闭......所以这应该为您解决问题:

var query = new SolrQueryByField("myField", "some value~");

query.Quoted = false;

需要注意的是(至少现在)您必须按字段使用查询,SolrQuery 上不存在相同的参数......但我猜这是有道理的。

于 2011-12-08T06:58:12.163 回答
0

您可以使用索引时间同义词来执行此操作,请参阅Solr Wiki - SynonymFilterFactory以获取有关如何设置的详细信息。

于 2011-12-07T22:55:50.337 回答