【问题标题】:Is there a way to autocorrect spellings in solr and return additional fields corresponding to corrected value?有没有办法自动更正 solr 中的拼写并返回对应于更正值的附加字段?
【发布时间】:2015-07-16 19:51:00
【问题描述】:

我在 SOLR 中使用了建议器组件,但我觉得它更受限制,因为我无法控制值和字段(如果我有兴趣恢复其他字段以及我更正的拼写)。

我目前正在使用 shingles 和 edgengram 过滤器工厂进行无位置自动建议,我指定了与自动建议列表一起返回的必填字段。

<fieldType name="edgytext" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
      <analyzer type="index">
        <filter class="solr.LowerCaseFilterFactory"/> 
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="20" /> 
      </analyzer>
      <analyzer type="query">
        <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/> 
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.ShingleFilterFactory" outputUnigrams="true" outputUnigramIfNoNgram="true" maxShingleSize="99"/>
        <filter class="solr.PositionFilterFactory" />
      </analyzer>
    </fieldType>

有没有办法使用建议器或 SOLR(或任何其他过滤器)中的任何其他组件来返回自动建议结果、执行内联更正并返回所需字段作为响应?

注意: 我正在研究 fuse.js,我真的很喜欢自动更正在那里的工作方式。虽然它不是服务器端自动更正,但使用位图算法进行近似字符串匹配。

【问题讨论】:

  • 你能举个例子说明你想要得到什么吗?
  • 例如:如果有人在自动建议中输入“ipad ari”,我正在尝试根据特定字段进行自动更正(到“ipad air”)并返回该特定字段具有完整内容的文档'ipad 空气'。

标签: solr autocomplete spell-checking autosuggest search-suggestion


【解决方案1】:

我想出了一种方法来使用拼写检查组件和上述代码逻辑的组合进行动态自动提示。

首先我检查拼写是否正确(使用拼写检查组件),如果我没有得到任何建议,我只是尝试使用原始关键字进行查询。如果我收到任何建议,我会使用建议的术语(排序规则)进行新查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2010-10-06
    • 2014-04-29
    相关资源
    最近更新 更多