首页 文章

SOLR Spellcheck没有返回结果

提问于
浏览
1

我对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

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

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

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

相关问题