SOLR:搜索拼写检查案例处理不正确

SOLR: Search spellcheck cases handling is not proper

Case 1:

如果我搜索“Name:blck”,结果如下 -- 正确

"black"

未找到结果和拼写检查建议
{
  "responseHeader":{
    "status":0,
    "QTime":119,
    "params":{
      "q":"Name:blck",
      "fl":"Name",
      "rows":"5",
      "_":"1582184918494"}},
  "response":{"numFound":0,"start":0,"docs":[]
  },
  "spellcheck":{
    "suggestions":[
      "blck",{
        "numFound":1,
        "startOffset":5,
        "endOffset":9,
        "origFreq":0,
        "suggestion":[{
            "word":"black",
            "freq":32435}]}],
    "correctlySpelled":false}}

Case 2

如果我搜索“Name:blck+top”,结果如下 -- 这里我需要对黑字进行拼写检查

{
  "responseHeader":{
    "status":0,
    "QTime":48,
    "params":{
      "q":"Name:blck+top",
      "fl":"Name",
      "rows":"5",
      "_":"1582184918494"}},
  "response":{"numFound":14442,"start":0,"docs":[
      {
        "Name":"Shimmery Seamless Top"},
      {
        "Name":"Ruffle Sleeve Top"},
      {
        "Name":"Ruffle Sleeve Top"},
      {
        "Name":"Ruffle Sleeve Top"},
      {
        "Name":"Ruffle Sleeve Top"}]
  },
  "spellcheck":{
    "suggestions":[],
    "correctlySpelled":true}}

所以,基本上我只是想在搜索中的任何单词错误时显示拼写检查建议。

我的字段的结果在 solr 中有以下数据。

{
    "description":"Black Top"
},
{
    "description":"Sleeve Top"
},
{
    "description":"Seamless Top"
}

我的字段是 description,它在 solr.xml 中定义如下。

<field name="description" type="text_general"/>

相同的查询是:

http://10.168.72.101:8983/solr/knowledge_combined/select?df=description&fl=description&q=blck%20top&spellcheck=on

这是我从 solr 收到的回复。

这里是solr.config.xml

中添加的拼写检查配置
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">

    <str name="queryAnalyzerFieldType">text_general</str>

    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">description</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>
    </lst>
</searchComponent>

<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <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>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
</requestHandler>