solr创建索引_Solr:创建拼写检查器
solr创建索引
候选人选择
我们可以找到三种拼写错误[Kukich] :
- 印刷错误
- 认知错误
- 语音错误
简而言之,对于候选选择,我们使用以下solr模式构建索引:
<fieldType name="spellcheck_text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"><analyzer type="index"><tokenizer class="solr.KeywordTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/><filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" maxCodeLength="20" inject="false"/></analyzer></fieldType><field name="original_word" type="string" indexed="true" stored="true" multiValued="false"/><field name="analyzed_word" type="spellcheck_text" indexed="true" stored="true" multiValued="false"/><field name="freq" type="tfloat" stored="true" multiValued="false"/>
候选人排名
排名公式为:
我编写了一个小脚本(python),该脚本执行了之前所说的所有操作:
from urllib import urlopen
import doubleMethaphone
import levenshtain
import jsonserver = "http://benchmarks:8983/solr/testSpellMeta/"def spellWord(word, candidateNum = 70):#fuzzy + soundlikemetaphone = doubleMethaphone.dm(word)query = "original_word:%s~ OR analyzed_word:%s~" % (word, metaphone[0])if metaphone[1] != None:query = query + " OR analyzed_word:%s~" % metaphone[1]doc = urlopen(server + "select?rows=%d&wt=json&fl=*,score&omitHeader=true&q=%s" % (candidateNum, query)).read( )response = json.loads(doc)suggestions = response['response']['docs']if len(suggestions) > 0:#scorescores = [(sug['original_word'], scoreWord(sug, word)) for sug in suggestions]scores.sort(key=lambda candidate: candidate[1])return scoreselse:return []def scoreWord(suggestion, misspelled):distance = float(levenshtain.dameraulevenshtein(suggestion['original_word'], misspelled))if distance == 0:distance = 1000fuzzy = suggestion['score']logFreq = suggestion['freq']return distance/(fuzzy*logFreq)
测验
现在,让我们重复上一篇文章的一些测试,以查看改进。 在下表中,我向您显示结果。
测试集 | %Solr | %新 | Solr时间[秒] | 新时间[秒] | 改善 | 时间损失 |
FAWTHROP1DAT.643 | 45,61% | 81,91% | 31,50 | 74,19 | 79,58% | 135,55% |
batch0.tab | 28,70% | 56,34% | 21,95 | 47,05 | 96,30% | 114,34% |
SHEFFIELDDAT.643 | 60,42% | 86,24% | 19,29 | 35,12 | 42,75% | 82,06% |
我们可以看到,我们在改正效果方面得到了很好的改进,但是大约需要两倍的时间。
未来的工作
参考: emmaespina博客上的JCG合作伙伴 Emmanuel Espina 用Solr创建了拼写检查 工具 。
翻译自: https://www.javacodegeeks.com/2012/06/solr-creating-spellchecker.html
solr创建索引
solr创建索引_Solr:创建拼写检查器相关推荐
- Solr:创建拼写检查器
在上一篇文章中,我谈到了Solr Spellchecker的工作原理,然后向您展示了其性能的一些测试结果. 现在,我们将看到另一种拼写检查方法. 与其他方法一样,此方法使用两步过程. 相当快速的&qu ...
- [Google API](6)拼写检查器和缓存页面
作为 Google 创建索引过程的有机组成部分,Google 要检索被建立索引的页面副本,在搜索结果中为用户提供到缓存页面的链接.主要的缺点是用户看不到更新后的内容,但一些优点也是存在的. 检索缓存页 ...
- apache lucene_Apache Lucene拼写检查器的“您是不是要”功能
apache lucene Google的"您是不是要"功能 在上一篇文章中对Lucene进行了介绍之后 ,现在是时候提高它并创建一个更复杂的应用程序了. 您肯定最熟悉Google ...
- Apache Lucene拼写检查器的“您是不是要”功能
Google的"您是不是要"功能 在上一篇文章中对Lucene进行了介绍之后 ,现在是时候提高它,创建一个更复杂的应用程序了. 您肯定最熟悉Google的"您是不是要&q ...
- python代码大全p-21行Python代码实现拼写检查器
引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供非常好的拼写检查,比如你输入 speling,谷歌会马上返回 spelling. 下面是用21行python代码实现的一个简易但是具备 ...
- 拼写检查工具是android,Android的文本和输入---拼写检查器(一)-Go语言中文社区...
Android平台提供能够让你在应用程序中执行和访问拼写检查的拼写检查器框架.这个框架是由Android平台提供的文本服务API之一. 要在应用程序中使用该框架,你就要创建一个特殊的Android服务 ...
- python拼写错误20几分钟怎么办_Python | 21行轻松搞定拼写检查器
引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供非常好的拼写检查,比如你输入 speling,谷歌会马上返回 spelling. 下面是用21行python代码实现的一个简易但是具备 ...
- Mindjet MindManager 出现“拼写检查器出错”等类似问题
在Mindjet MindManager安装好之后可能会出现该问题,也有可能在未知的条件下出现该问题. 虽然该问题可能并不影响使用,但是每次打开都会弹出一次还是会感觉到厌烦的. 该问题复现: 创建新的 ...
- Visual Studio 17.5 拼写检查器预览版现已推出,来说说你的看法吧
写在前面: Visual Studio17.5版本已添加拼写检查器功能,Visual Studio 中的许多功能旨在帮助你编写所需的代码.Visual Studio帮助你确保代码的编译,甚至可以帮助代 ...
最新文章
- apk解密工具_手机端操作| Auto.js一键解密/一键加密工具免费分享
- 如何选择一个合适的建站系统?
- 不想工作就想创业?我劝你看完这档综艺再决定
- 开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm
- 怎样在word中同时输入上下标
- POJ 1789(最小生成树)
- UI设计灵感|挑战经典!不一样的注册登录页
- c++ string 无法通过下标访问_数组下标1你见过吗?
- SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
- 2019 ,我的新年Flag
- 铁甲雄心机器人建造成本_铁甲雄心最强机器人
- 中国的程序员培训是不是有问题?
- 【收藏防丢】rar压缩包忘记密码怎么办?手把手教你轻松解决
- GitHub 中国区前 100 名到底是什么样的人
- javaScript基础语法知识点总结
- 线性代数 06 克莱默法则
- 粘结剂菱镁板建筑材料英国UKCA认证—EN 14016-1
- K3s - 安装部署
- 编译Busybox产生的两个错误
- 「雕爷学编程」Arduino动手做(25)——MQ2气敏检测模块