SOLR Spellcheck没有返回结果

时间:2017-04-21 14:31:37

标签: solr lucene spell-checking

我遇到了solr 6.5.0的拼写检查组件的烦人问题。如果我通过拼写检查请求处理程序/ spell运行查询,则查询按预期工作,我会得到错误单词的建议拼写。

{
  "responseHeader":{
    "status":0,
    "QTime":42},
  "response":{"numFound":0,"start":0,"docs":[]
  },
  "spellcheck":{
    "suggestions":{
      "injary":{
        "numFound":3,
        "startOffset":0,
        "endOffset":6,
        "origFreq":0,
        "suggestion":[{
            "word":"injury",
            "freq":121},
          {
            "word":"inward",
            "freq":3},
          {
            "word":"injure",
            "freq":1}]}},
    "correctlySpelled":false,
    "collations":{
      "collation":{
        "collationQuery":"injury",
        "hits":121,
        "misspellingsAndCorrections":[
          "injary","injury"]},
      "collation":{
        "collationQuery":"inward",
        "hits":3,
        "misspellingsAndCorrections":[
          "injary","inward"]},
      "collation":{
        "collationQuery":"injure",
        "hits":1,
        "misspellingsAndCorrections":[
          "injary","injure"]}}}}

但是如果我通过标准请求处理程序运行查询,/ select,我就没有建议。

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"injary",
      "indent":"on",
      "spellcheck":"on",
      "wt":"json",
      "_":"1492780436450"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }}

非常感谢任何帮助。

我修改了 solrconfig.xml 以使两个请求处理程序按行如下排列,其余的是默认值:

     <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">content</str>
        <str name="classname">solr.DirectSolrSpellChecker</str>
        <str name="distanceMeasure">internal</str>
        <float name="accuracy">0.5</float>
        <int name="maxEdits">2</int>
        <int name="minPrefix">1</int>
        <int name="maxInspections">5</int>
        <int name="minQueryLength">4</int>
        <float name="maxQueryFrequency">0.01</float>
        <float name="thresholdTokenFrequency">.0001</float>
      </lst>

  <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <!-- Solr will use suggestions from both the 'default' spellchecker
           and from the 'wordbreak' spellchecker and combine them.
           collations (re-written queries) can include a combination of
           corrections from both spellcheckers -->
      <str name="spellcheck.dictionary">default</str>
      <str name="spellcheck">on</str>
      <str name="spellcheck.extendedResults">true</str>
      <str name="spellcheck.count">10</str>
      <str name="spellcheck.alternativeTermCount">5</str>
      <str name="spellcheck.maxResultsForSuggest">5</str>
      <str name="spellcheck.collate">true</str>
      <str name="spellcheck.collateExtendedResults">true</str>
      <str name="spellcheck.maxCollationTries">10</str>
      <str name="spellcheck.maxCollations">5</str>
      <str name="wt">json</str>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <int name="rows">10</int>
      <str name="df">_text_</str>
      <str name="wt">json</str>
      <!-- spell check component configuration -->
      <str name="spellcheck">true</str>
      <str name="spellcheck.count">5</str>
      <str name="spellcheck.collate">true</str>
      <str name="spellcheck.maxCollationTries">5</str>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
    </requestHandler>

1 个答案:

答案 0 :(得分:0)

问题似乎与我的托管模式文件有关。

我正在解析XML文件,solr会自动将XML文件的字段作为类型字符串添加到managed-schema文件中。当我更改字典字段以键入text_general时,它开始按预期工作。

我无法看到这是如何运作的,但我没有做任何其他改变。我删除了我的核心并从头开始确保我没有弄错,但它确实有效。