SOLR将拼写检查添加到文档列表中?

时间:2013-11-22 17:05:50

标签: solr

我看到很多教程向您展示如何使用solr实现'你的意思'功能,搜索'ance'可能会返回'你的意思是粉刺吗?​​'

我们可以让solr自动更正并立即搜索,而不是简单地建议正确的拼写吗?有点像谷歌有时会返回'显示痤疮的结果而不是Ance'

如何实施?是否可以在一个请求中完成?

编辑:我目前在solrconfig.xml中的尝试

<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">text</str>


    <str name="spellcheck.collate">true</str>
    <str name="spellcheck.collateExtendedResults">true</str> 
    <str name="spellcheck.maxCollationTries">5</str>
    <str name="spellcheck.maxCollations">3</str>

    <str name="spellcheck">on</str>


 </lst>


<arr name="last-components">
    <str>spellcheck</str>
</arr>

</requestHandler>

上面显示了/ select的请求处理程序,我尝试过做Arun在下面建议的内容。然而,这并没有得到我追求的结果。当我输入像'clrfying'这样的拼写错误时,我得到:

{
  "responseHeader": {
    "status": 0,
    "QTime": 49,
    "params": {
      "indent": "true",
      "q": "text:clrifying",
      "_": "1385375095827",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 0,
    "start": 0,
    "docs": []
  },
  "spellcheck": {
    "suggestions": [
      "clrifying",
      {
        "numFound": 1,
        "startOffset": 5,
        "endOffset": 14,
        "suggestion": [
          "clarifyin"
        ]
      },
      "collation",
      [
        "collationQuery",
        "text:clarifyin",
        "hits",
        8,
        "misspellingsAndCorrections",
        [
          "clrifying",
          "clarifyin"
        ]
      ]
    ]
  }
}

正如您所看到的,它正在返回拼写更正。但我想要的是solr还根据这些建议提供搜索结果。

1 个答案:

答案 0 :(得分:1)

是的,它被称为“整理”查询 您需要设置请求处理程序以进行以下设置:

<str name="spellcheck.collate">true</str> 
<str name="spellcheck.collateExtendedResults">true</str> 
<str name="spellcheck.maxCollationTries">5</str>
<str name="spellcheck.maxCollations">3</str>

一起
<str name="spellcheck">on</str>

您可以在此处阅读:http://wiki.apache.org/solr/SpellCheckComponent

修改

您需要在幕后执行collat​​ionQuery,然后根据您所获得的内容向用户显示一条信息性消息,指出“搜索粉刺而不是 ance ”对于你的校对词“命中”。排序“使”能够执行此操作,以便在使用建议的查询替换用户查询之前运行某些逻辑,并在“幕后”重新执行它。你不想让solr一直运行建议查询......即使用户是对的......你需要看看用户查询得到的结果数量非常少,说2次点击并且整理的数量非常多结果说200表示用户查询有问题,你需要在“幕后”进行判断调用并重新运行整理查询,并将大多数结果作为替换。阅读上面的文档链接。