请求句柄solrconfig.xml拼写检查程序

Bla*_*dez 6 solr spell-checking

根据solr文档,我正在尝试设置拼写检查程序.但是当我测试时,我没有任何建议.我的代码如下:

 <searchComponent name="spellcheck" class="solr.SpellCheckComponent">

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

    <lst name="spellchecker">
      <str name="classname">solr.IndexBasedSpellChecker</str>
      <str name="name">default</str>
      <str name="field">name</str>
      <str name="spellcheckIndexDir">./spellchecker</str>
    </lst>
    <str name="queryAnalyzerFieldType">textSpell</str>

  </searchComponent>


 <requestHandler name="/spellcheck" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <!-- Optional, must match spell checker's name as defined above, defaults to "default" -->
      <str name="spellcheck.dictionary">default</str>
      <!-- omp = Only More Popular -->
      <str name="spellcheck.onlyMorePopular">false</str>
      <!-- exr = Extended Results -->
      <str name="spellcheck.extendedResults">false</str>
      <!--  The number of suggestions to return -->
      <str name="spellcheck.count">1</str>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>
Run Code Online (Sandbox Code Playgroud)

我发送给Solr的查询:
q =%2B%28text%3A%28gasal%29%29&suggestField = contentOriginal&ontologySeed = gasal&spellcheck.build = true&spellcheck.q = gasal&spellcheck = true&spellcheck.collat​​e = true&hl = true&hl.snippets = 5&hl.fl = text&hl. FL =文本&行= 12&开始= 0&QT =%2Fsuggestprobabilistic

有谁知道为什么?提前致谢

Pas*_*imo 17

首先,不要queryAnalyzerFieldType在组件配置中重复两次.

建议不要使用/spellcheck处理程序,而是将拼写检查组件绑定到标准查询处理程序(如果是你使用的话,则将dismax绑定),如下所示:

<requestHandler name="standard" class="solr.SearchHandler" default="true">
 <lst name="defaults">
    ...
 </lst>   
 <arr name="last-components">
    <str>spellcheck</str>
    ...         
 </arr>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样调用它:
http://localhost:8983/solr/select?q=komputer&spellcheck=true

另外,在使用之前不要忘记构建拼写检查字典:
http://localhost:8983/solr/select/?q=*:*&spellcheck=true&spellcheck.build=true

您可以通过在组件中配置字典来强制在每次提交时构建字典:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
 <str name="queryAnalyzerFieldType">textSpell</str>
 <lst name="spellchecker">
  <str name="classname">solr.IndexBasedSpellChecker</str>
  <str name="name">default</str>
  <str name="field">name</str>
  <str name="spellcheckIndexDir">./spellchecker1</str>
  <str name="buildOnCommit">true</str>
 </lst>
</searchComponent>
Run Code Online (Sandbox Code Playgroud)

最后,确保您的name字段确实是一个索引字段类型textSpell,并且它包含足够的内容来构建一个好的字典.在我的例子中,我有一个名为的字段spellchecker,它是从我的索引的几个字段填充的(使用copyField模式中的指令).