热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

solrspellcheck功能

需要实现多个field的spellcheck功能,一直犯迷糊,现在知道怎么用了

需要实现多个field的spellcheck功能,一直犯迷糊,现在知道怎么用了

defaultsolr.IndexBasedSpellCheckervar_poi_chinese_strspellchecker0.7truebrandsolr.IndexBasedSpellCheckerbrandbrand_spellchecker0.3truestring

要先有一个searchComponent,上面只是一个例子,brand是后面会用到的spellcheck.dictionary的标识,field是指在建索引过程中哪个field需要做spellcheck

accuracy是指字符串之间的distance要小于accuracy*query长度。

queryAnalyzerFieldType是指用哪个queryAnalyzer来进行分词,一般不分词,因为如果找到了任意一个term,表明这个query就是没问题的,就不会启动spellcheck功能。


falsefalse3spellcheck

brandfalsefalse3brand_spellcheck

这里是两个不同的requestHandler,设置spellcheck.dictionary可以指定使用哪个spellchecker来做拼写检查

如果要根据不同的field或者是使用不同的距离方法来进行拼写检查,就需要指定不同的spellchecker。或者新建一个requestHandler(这里不建议这样做,只会令solrconfig.xml文件看起来臃肿冗余)。但是,如果是同一个requestHandler里面要用好几个spellcheck,则需要满足它们的距离测量方法以及accuracy是相同的,否则只能使用不同的requestHandler。


注意在requestHandler里面的最后有一个segment

brand_spellcheck这个last-components指定了该requestHandler使用哪个searchComponent来进行一些查询(或者是拼写检查等其他操作)。

不过requestHandler里面的那些searchComponent的属性都可以动态的使用url来设定。

例如:

http://10.141.201.53:8080/solr/poi/spell?wt=xml&indent=true&spellcheck=true&spellcheck.q=adibas&spellcheck.dictionary=brand


这是使用searchComponent里的brand来进行spellcheck的结果,可见由于它的accuracy只有0.3,所以得到的结果可以有很多(但是不多于spellcheck.count个)


这里使用searchComponent里的default来进行检查,accuracy有0.7,所以只找出了adidas一个(distance为1)


这里为什么brand没有找出adidas。。那是因为数据库里面的数据比较渣,adidas商店的brand信息为空,如果有的话,那么adidas肯定在第一个图里排第一。


好吧这里那就再举个例子:

http://10.141.201.53:8080/solr/poi/spell?wt=xml&indent=true&spellcheck=true&spellcheck.q=东方商厦店&spellcheck.dictionary=default


http://10.141.201.53:8080/solr/poi/spell?wt=xml&indent=true&spellcheck=true&spellcheck.q=东方商厦店&spellcheck.dictionary=brand


可以看到由于数据的不同以及accuracy的不同,default和brand这两个spellchecker返回的结果不同,但是距离最小的 东方商厦 都排在最前面



这里的spellcheck结果也有一个排序策略可供选择


freq

默认是根据距离排名,也可以根据frequency或者是自定义排名


一般比较重要比较基本的用法就是这些,其他功能就可以参考solr的手册来使用了

SpellCheckComponent


推荐阅读
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 本文深入探讨了Hibernate框架中乐观锁和悲观锁的机制及其多态特性。乐观锁假设数据在大多数情况下不会发生冲突,因此在读取数据时不加锁,而是在更新时检查版本号以确保数据未被修改。相比之下,悲观锁则认为数据在并发环境下容易产生冲突,因此在读取数据时立即加锁,以防止其他事务访问同一数据,从而避免潜在的数据不一致问题。文章还详细分析了这两种锁机制在实际应用中的优缺点,并介绍了Hibernate中的多态特性如何与锁机制结合,以实现更高效的数据管理和并发控制。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
author-avatar
mobiledu2502918033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有