solr拼写检查配置

拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能。

那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正。
举个例子,假如你在百度里面输入在在线电瓶,可能它的索引库里面就没有,但是它有可能返回在线电影,在线电视,在线观看等等一些词,这些,就用到拼写检查的功能了。

solr是一个基于lucene开发接口实现的成熟的搜索系统,通过不同的控件(Component)实现不同的搜索功能,其中一个SpellCheckComponent实现了拼写检查功能。

要在搜索过程中添加拼写检查功能,必须在solr的solrconfig.xml中配置spellcheck控件,并在相关SearchHandler(select/query等)中添加拼写检查参数配置。

配置如下:

 1    <!-- Spell Check
 2
 3         The spell check component can return a list of alternative spelling
 4         suggestions.
 5
 6         http://wiki.apache.org/solr/SpellCheckComponent
 7      -->
 8   <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
 9
10     <!-- 将输入关键词当做text_general类型进行处理 -->
11     <str name="queryAnalyzerFieldType">text_general</str>
12
13     <!-- Multiple "Spell Checkers" can be declared and used by this
14          component
15       -->
16
17     <!-- a spellchecker built from a field of the main index -->
18     <lst name="spellchecker">
19       <!-- 拼写检查模块名 -->
20       <str name="name">default</str>
21       <!-- 对索引中的哪个字段进行拼写检查 -->
22       <str name="field">text</str>
23       <!-- 自定义拼写检查,可以用自定义拼写检查类代替默认类 -->
24       <str name="classname">solr.DirectSolrSpellChecker</str>
25       <!-- 拼写检查编辑距离, 默认使用internal levenshtein -->
26       <str name="distanceMeasure">internal</str>
27       <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
28       <float name="accuracy">0.5</float>
29       <!-- 最大编辑距离,与输入字符串编辑距离小于等于2的字符串被检索出来作为纠错结果 -->
30       <int name="maxEdits">2</int>
31       <!-- 与输入字符串最少有一个字符相等,才能被检索出来 -->
32       <int name="minPrefix">1</int>
33       <!-- maximum number of inspections per result. 一次纠错探测最大数量 -->
34       <int name="maxInspections">5</int>
35       <!-- 纠错元词最小长度,元词长度小于4不进行纠错 -->
36       <int name="minQueryLength">4</int>
37       <!-- maximum threshold of documents a query term can appear to be considered for correction -->
38       <float name="maxQueryFrequency">0.01</float>
39       <!-- uncomment this to require suggestions to occur in 1% of the documents
40           <float name="thresholdTokenFrequency">.01</float>
41       -->
42     </lst>
43
44     <!-- a spellchecker that can break or combine words. 不同实现的拼写检查模块 -->
45     <lst name="spellchecker">
46       <str name="name">wordbreak</str>
47       <str name="classname">solr.WordBreakSolrSpellChecker</str>
48       <str name="field">text</str>
49       <str name="combineWords">true</str>
50       <str name="breakWords">true</str>
51       <int name="maxChanges">10</int>
52     </lst>
53
54     <!-- 使用不同编辑距离的拼写检查模块 -->
55     <!--
56        <lst name="spellchecker">
57          <str name="name">jarowinkler</str>
58          <str name="field">spell</str>
59          <str name="classname">solr.DirectSolrSpellChecker</str>
60          <str name="distanceMeasure">
61            org.apache.lucene.search.spell.JaroWinklerDistance
62          </str>
63        </lst>
64      -->
65
66     <!-- a spellchecker that use an alternate comparator
67
68          comparatorClass be one of:
69           1. score (default)
70           2. freq (Frequency first, then score)
71           3. A fully qualified class name
72       -->
73     <!--
74        <lst name="spellchecker">
75          <str name="name">freq</str>
76          <str name="field">lowerfilt</str>
77          <str name="classname">solr.DirectSolrSpellChecker</str>
78          <str name="comparatorClass">freq</str>
79       -->
80
81     <!-- A spellchecker that reads the list of words from a file -->
82     <!--
83        <lst name="spellchecker">
84          <str name="classname">solr.FileBasedSpellChecker</str>
85          <str name="name">file</str>
86          <str name="sourceLocation">spellings.txt</str>
87          <str name="characterEncoding">UTF-8</str>
88          <str name="spellcheckIndexDir">spellcheckerFile</str>
89        </lst>
90       -->
91   </searchComponent>

配置好SpellCheckComponent组件后,需要配置相应的SearchHandler,在正式搜索系统应用中需要配置select和query,自己测试时可以自定义一个,如:spell,配置如下:

  <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="df">text</str>
      <!-- 下边配置了两个拼写检查子模块,是前边定义好的default和wordbreak,solr会分别用两个模块对输入进行拼写检查,最终将结果整合到一块 -->
      <str name="spellcheck.dictionary">default</str>
      <str name="spellcheck.dictionary">wordbreak</str>
      <str name="spellcheck">on</str>
      <!-- 为纠错后的提示词添加额外信息,如在索引中的频率 -->
      <str name="spellcheck.extendedResults">true</str>
      <!-- 一次纠错返回结果数量 -->
      <str name="spellcheck.count">10</str>
      <!-- The maximum number of suggestions to return for terms that exist in the index -->
      <str name="spellcheck.alternativeTermCount">5</str>
      <!-- The maximum number of results the query can return while still triggering spelling suggestions -->
      <str name="spellcheck.maxResultsForSuggest">5</str>
      <!-- 是否添加校验结果 -->
      <str name="spellcheck.collate">true</str>
      <!-- 是否添加校验拓展结果 -->
      <str name="spellcheck.collateExtendedResults">true</str>
      <!-- The maximum # of collation possibilities to try before giving up. -->
      <str name="spellcheck.maxCollationTries">10</str>
      <!-- 返回校验结果的最大数目 -->
      <str name="spellcheck.maxCollations">5</str>
    </lst>

    <!-- 必须将拼写检查控件添加到搜索控件序列中,若无此项则不进行拼写检查 -->
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>

在solr中测试如下:

时间: 2024-11-07 09:57:51

solr拼写检查配置的相关文章

solr入门之solr的拼写检查功能的应用级别尝试

今天主要是收集了些拼写检查方面的资料和 尝试使用一下拼写检查的功能--=遇到了不少问题 拼写检查的四种配置目前我只算是成功了半个吧 --------------------------------- 拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能.在这之前,笔者先简单的说一下什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正. 举个例子,假如你在百度里面

solr特点四: SpellCheck(拼写检查)

接下来,我将介绍如何向应用程序添加 “您是不是要找……”(拼写检查). 提供拼写建议 Lucene 和 Solr 很久以前就开始提供拼写检查功能了,但直到添加了 SearchComponent架构之后,这些功能才可以无缝使用.现在您可以输入一个查询,让它不仅返回查询结果,并且为查询词语提供拼写建议(如果存在的话).然后可以利用这些建议像 Google 那样显示 “您是不是要找……”,或者像 Yahoo! 那样显示 “请尝试……”. 集成拼写检查的妙处在于它能够(而且必须)根据索引中的标记给出建议

java操作solr实现索引,查询,删除,拼写检查等功能

使用java操作solr 前面讲了很多对solr的操作都是直接在页面上操作的,实际工作中肯定是要使用java进行操作的,在这我们就看一下如何使用java来操作solr Solr提供了solrj来使用java操作solr,SolrJ是封装了httpClient方法,来操作solr的API的.首先添加maven依赖 <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj<

搜索拼写检查

一.拼写检查的目的 拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能. 那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正. 举个例子,假如你在百度里面输入在在线电瓶,可能它的索引库里面就没有,但是它有可能返回在线电影,在线电视,在线观看等等一些词,这些,就用到拼写检查的功能了.如下图: 二.搜索拼写检查现状 solr搜索系统提供了基本的关键词提示功能

lucene拼写检查模块

Lucene是Apache发布的开源搜索引擎开发工具包,不仅提供了核心的搜索功能,还提供了许多其他功能插件,例如:拼写检查功能模块. 搜索拼写检查模块实现类在lucene-suggest-x.xx.x.jar包中,package名为org.apache.lucene.search.spell,其中拼写检查功能的核心实现有3个类, 分别为:SpellChecker.DirectSpellChecker.WordBreakSpellChecker; 3个类提供了不同的拼写检查方式,区别如下: Spe

关闭Mycelipse的拼写检查

关闭拼写检查的方法如下: 打开工具栏的window下的preferences 依次展开General->Editors->TextEditors,找到里边的Spelling选项,把前面的勾去掉

取消eclipse/myeclipse的拼写检查

大家可能会被拼写错误提示所烦扰.只要简单几步即可取消拼写检查 window -> Preferences - >General -> Editors -> Spelling -> Enable spell checking  把钩去掉即可 取消eclipse/myeclipse的拼写检查,布布扣,bubuko.com

MindManager中的拼写检查功能如何用

MindManager2016思维导图中的拼写检查功能如同大部分标准拼写检查器,运行拼写检查(相关文章请参考详解MindManager 15中文版思维导图设置选项之拼写检查),检查导图上的所有主题文本和备注文本,还可以使用自动拼写功能,在输入文本和使用自动更正功能,用修正版本自动替换明显拼错的单词时检查拼写,本文主要为大家讲解如何在MindManager2016中拼写检查导图. 启动拼写检查 在审阅选项卡上,验证组里,点击拼写检查或者按F7. 拼写检查可以检查导图里的所有主题(常规主题.标注和浮

phpcms v9无法连接数据库服务器,请检查配置

安装phpcms v9是数据库信息配置正确,但仍提示:无法连接数据库服务器,请检查配置 1.修改install/step5.tpl.php 127行为:'&dbpw='+escape($('#dbpw').val()) 2.修改install/step6.tpl.php 55行为:var dbpw = escape('<?php echo $dbpw?>');