【问题标题】:SolrNet: How can I perform Fuzzy search in SolrNet?SolrNet:如何在 SolrNet 中执行模糊搜索?
【发布时间】:2011-12-07 22:26:32
【问题描述】:

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

【问题讨论】:

  • 有趣!我刚刚在字段查询中尝试使用 ~(tilde) 时遇到了同样的问题。看起来我们可能不得不为此在 SolrNet 上破解调试器!

标签: solrnet fuzzy-search


【解决方案1】:

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

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

query.Quoted = false;

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

【讨论】:

  • SolrQuery 不引用任何特殊字符,因此无需设置任何标志...
【解决方案2】:

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

【讨论】:

  • 哦,所以我不能在 SolrNet 中使用波浪号“~”进行模糊搜索?
  • 好问题,我不熟悉波浪符号及其在 Solr 中的行为。
  • 我也不知道 Solr 中使用了波浪号。无论如何,谢谢。
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多