首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请求句柄solrconfig.xml拼写检查器

请求句柄solrconfig.xml拼写检查器
EN

Stack Overflow用户
提问于 2010-10-19 17:47:40
回答 1查看 5.9K关注 0票数 6

根据solr documentation的说法,我正在尝试设置拼写检查器。但是当我测试的时候,我没有任何建议。我的代码片段如下:

代码语言:javascript
复制
 <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>

我发送给Solr的查询:

q=%2B%28text%3A%28gasal%29%29&suggestField=contentOriginal&ontologySeed=gasal&spellcheck.build=true&spellcheck.q=gasal&spellcheck=true&spellcheck.collate=true&hl=true&hl.snippets=5&hl.fl=text&hl.fl=text&rows=12&start=0&qt=%2Fsuggestprobabilistic

有人知道为什么吗?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-19 19:56:01

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

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

代码语言:javascript
复制
<requestHandler name="standard" class="solr.SearchHandler" default="true">
 <lst name="defaults">
    ...
 </lst>   
 <arr name="last-components">
    <str>spellcheck</str>
    ...         
 </arr>
</requestHandler>

然后,您可以这样调用它:

http://localhost:8983/solr/select?q=komputer&spellcheck=true

另外,在使用to build the spellcheck dictionary之前,不要忘记它:

http://localhost:8983/solr/select/?q=*:*&spellcheck=true&spellcheck.build=true

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

代码语言:javascript
复制
<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>

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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3967101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档