Solr实现类似MySQL的LIKE查询功能
最近在工作中遇到需要对大文本进行关键词查询。需要实现的效果为,当用户输入一个字或者一个词,要搜出包含这个字或者词的所有内容。就相当于MySQL
的LIKE
查询效果一样。
在这种场景下,第一时间想到的肯定是直接使用MySQL
存储,然后进行查询就可以了,完全符合业务需求。但是经过尝试,当数据量比较大的时候,查询的速度慢得让人根本无法接受。
于是只能考虑其他方案,由于和搜索有关,于是想到了之前使用过的Solr
。经过一系列折腾,最后得出最终方案如下。
schema
设计的时候,需要自定义字段类型,使用solr.NGramTokenizerFactory
分词器,并且将分片参数设置成1。
<fieldType name="text_ng1" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1"/>
</analyzer>
</fieldType>
- 对需要进行查询的字段设置成自定义的类型。
<field name="question_content_list" type="text_ng1" indexed="true" stored="true" required="false" multiValued="true" />
- 查询条件中需要对关键字加双引号,表示不对查询词进行分词。
/select?q=question_content_list%3A"空间"&start=0&rows=1&wt=json&indent=true
- 查询结果响应测试。
{
"responseHeader": {
"status": 0,
"QTime": 1,
"params": {
"q": "question_content_list:\"空间\"",
"indent": "true",
"start": "0",
"rows": "1",
"wt": "json"
}
},
"response": {
"numFound": 62,
"start": 0,
"docs": [
{
"question_content_list": [
"18088",
"qq空间",
"http://photo.qq.com"
],
"question_id": "9DSOPHKVYF4G",
"_version_": 1661304065051590660
}
]
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
为什么你现在必须迁移到 Python 3
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 从 Python 2 迁移到 Python 3,只剩不到 1 个月的时间。幸运的是,迁移工作没想象中那么困难。 Python 2 不再受支持 众所周知,对 Python 2 的支持将在 2020 年初停止。不管怎样,“板上钉钉”的是,最后一个主要的 2.7.x 版本将在 2020 年 4 月发布。之后,针对 Python 2 的所有开发都将停止,这意味着不再有安全更新。 目前,许多包的维护者都已迁移到 Python 3。其中,有些仍然支持 Python 2,而其他的则已经放弃。2020 年 4 月后,大多数软件包将停止支持 Python 2。 据悉,Python 3.0 发布于 2008 年 12 月 3 日。没错,我们曾有足够时间进行迁移。如果现在还没有行动,那就应该把它放在第一。你至少应该在 2020 年结束前迁移到 Python 3,否则就要面临各种风险,比如漏洞、无法运行的软件等。 如何查看你正在运行的版本如果不知道正使用的 Python 版本,你可以用下面的命令查看当前的 Py...
-
下一篇
混合云如何平衡内部部署解决方案和云计算服务
【金融特辑】光大银行科技部DBA女神带你从0到1揭秘MGR 构建和创建混合云架构有助于平衡云计算服务的低成本与内部部署服务器的私密性。 如果企业认为多云应用程序非常灵活,那么可能需要探索混合多云所提供的优势。混合多云(或者简称为混合云)将云计算资源与内部部署基础设施结合在一起。混合云具有更多的优势有一些原因,例如,当企业处理大量数据时,依靠混合云环境可以在性能和灵活性之间实现优秀平衡。在Vision AI等特定应用中,混合云让用户能够从实时的内部部署处理中获益,同时保持系统的开放性和灵活性,充分利用云计算技术。 找到这种平衡才是一个真正的挑战。虽然云平台现在具有很高的可用性,但内部部署的入门门槛仍然相对较高。甚至混合云的概念本身也很难定义。以下将讨论如何在内部部署解决方案和云计算服务之间的功能找到平衡。 为什么选择混合云? 为了对内部部署基础设施和云计算服务的优势进行平衡,首先了解为什么需要实现混合云。在这个过程中,首先要确定使用混合云的目标,并确保实现与业务目标相匹配。 为什么选择混合云仍然是一个大问题,但这远非唯一的问题。企业还必须询问自己要实现的主要目标以及预期的收益。企业要在混...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8