【问题标题】:Solr spell check multi word query with some correct wordsSolr拼写检查多词查询与一些正确的词
【发布时间】:2016-04-14 15:35:17
【问题描述】:

假设用户搜索如下内容:

red computor

“red”拼写正确,但“computor”拼写不正确。我对拼写检查器有以下配置:

<lst name="spellchecker">
  <str name="name">default</str>
  <str name="field">spelling</str>
  <str name="classname">solr.IndexBasedSpellChecker</str>
  <str name="accuracy">0.5</str>
  <int name="maxEdits">2</int>
  <int name="minPrefix">1</int>
  <int name="maxInspections">5</int>
  <int name="minQueryLength">3</int>
</lst>

我发出的查询如下:

http://localhost:8983/solr/collection1/spell?q=computor+red&wt=json&indent=true&spellcheck=true&spellcheck.collate=true

因为“red”的拼写正确,我得到了与“red”相关的文档的结果,但没有得到拼写错误的术语“computor”的任何拼写建议。如果我将“red”更改为“reeed”等不正确的内容,我会收到“reeed”和“computor”的拼写建议,但如果某个术语的拼写似乎正确,则根本不会收到任何建议。

如何重新配置​​我的查询或拼写检查器以对查询中的每个传入术语运行拼写检查器?

【问题讨论】:

  • 你找到解决方案了吗?
  • 我还没有找到使用 solr 的解决方案。

标签: solr spell-checking


【解决方案1】:

我也遇到过类似的问题,但使用 solr 找到了解决方案。

如果您使用的是旧版本,请先将 solr 版本升级到最新的 Solr-6.1.0。

如果您使用的是 IndexBasedSpellChecker,那么您的文档中应该包含 computer 字样。按字段类型中的 index="true"。

为了正确的拼写检查更改,

accuracy => 0.001
minCount => 1
maxCollationTries => 1
maxCollations => 1

如果现在不需要,请删除它

<int name="maxEdits">2</int>
<int name="minPrefix">1</int>
<int name="maxInspections">5</int>

在 indexBasedSpellcheckerComponent 下面添加这段代码,

<!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
<lst name="spellchecker">
  <str name="name">wordbreak</str>
  <str name="classname">solr.WordBreakSolrSpellChecker</str>      
  <str name="field">spelling</str>
  <str name="combineWords">true</str>
  <str name="breakWords">true</str>
  <int name="maxChanges">10</int>
</lst>

<!-- Example of using different distance measure -->
<lst name="spellchecker">
  <str name="name">spelling</str>
  <str name="field">lowerfilt</str>
  <!-- Use a different Distance Measure -->
  <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
  <str name="spellcheckIndexDir">./spellchecker</str>
</lst>

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您需要增加参数spellcheck.maxResultsForSuggest 的值,如果有“足够”的搜索结果,这将阻止建议。例如,尝试添加到您的配置中:

    <int name="maxResultsForSuggest">500</int>
    

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      相关资源
      最近更新 更多