首页 > 其他分享 >全文搜索引擎solr使用过程中遇到的一些问题分析

全文搜索引擎solr使用过程中遇到的一些问题分析

时间:2022-11-21 18:06:41浏览次数:46  
标签:xml 分词器 搜索引擎 IK 搜索 版本 solr 全文

产生背景

​ 在整个项目中实现商品搜索功能电商项目中,因为用户有时候不是多么清楚他所需要的东西的名称或者商店的名称,有时候仅仅是只知道他所需要的商品是干嘛用的,又或者是有多个要求,为了满足用户的诸多需求更准确的查询到用户所需要的商品,所以就用到了Solr搜索引擎

简介

​ solr是一个基于Lucene的全文搜索服务器,相比Lucene更高效、使用更便捷,在进行模糊匹配的时候,他可以 用来替代数据库中的like ,从而在匹配准确性以及性能进行大幅度的提高。因为官方的分词器对中文支持不好所以使用了第三方的IK分词器来进行分词。在建立索引的时候我们通过在schema.xml配置IK分词器来完成中文分词。从而实现了高亮显示关键词,分页,排序,多字段,多条件的高性能搜索。

目前有很多优秀的中文分词组件 :像mmseg4j,IK Analyzer ,Paoding

通过查询资料发现用 IKAnalyzer比较好IK 比其他中文分词维护的勤快,和 Solr 集成也相对容易。

使用中的问题

我们在配IK分词器的时候,当时遇到了三个问题:

  • 分词器版本与solr服务版本的匹配:

当时用的solr是4.10.4版本的因为这个版本比较好用,稳定,5.以上的版本bug比较多,配IK分词器的2012FF_u1版本,开始时用的是u6,然后配完效果出不来,上网查了好多资料,又问了之前加的一个搜索引擎群,才知道是版本问题,u3,u5,u6的都不好用,只有u1的和solr4.10版本的合适,改完之后问题确实解决了

  • 加入分词器的schema文件要把version改为1.5基本的CRUD操作都可以,但是搜索却只能全字匹配或者只能单个字符匹配出结果。

这是绝对不能容忍的。定位问题接近了一天,找有经验的同事给 排查也没排查出来问题。最后我自己一点一点比对multicore文件夹下的配置文件跟F:\solr\solr-4.6.0\example\solr \collection1这个文件夹下的配置文件的配置区别。当我把schema.xml的version属性从1.1升到跟collection1下的相同文件的1.5一致之后。重启服务器,问题解决了!、

  • 分词器的词典编码格式为UTF-8无BOM格式

在从数据中取数据生成索引的时候,因为表中的数据量比较大,防止一次取出所导致内存溢出问题,我采用了分段批量提取的方式进行,

  • 此外我们为了提高solr搜索的性能对其进行了主从配置。

​ 1. 我们solr使用的是solr4.7版本

​ 2. 通过修改schema.xml来添加要进行索引的字段以及增加ik分词器

​ 3. 通过solrj将数据库中的数据生成solr中的索引文件,注:solrj是java程序调用solr服务所用的jar包。

​ 4. 通过在solrconfig.xml中配置requestHandler name=“/Replication”来进行主从同步的配置,在从solr中通过masterUrl指明要从哪些主solr服务器中同步数据

​ 我们为了提高用户体验度还使用了solr的spellCheck可以用于查询输入的自动完成功能auto-complete。他是基于动态代码方式建立内容,suggestion可通过读文件方式建立内容,并有点击率排序。使用facet在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, facet的主要好处就是可以任意对搜索条件进行组合, 避免无效搜索, 改善搜索体验.

标签:xml,分词器,搜索引擎,IK,搜索,版本,solr,全文
From: https://blog.51cto.com/codeshallow/5872243

相关文章

  • 【MySQL8】中文分词支持全文索引
    第一步:配置文件my.ini(Windows10默认路径:C:\ProgramData\MySQL\MySQLServer8.0)中增加如下配置项,同时重启MySQL80服务:[mysqld]ngram_token_size=2       #这......
  • 原来用 MySQL 也可以做全文检索
    我是风筝,公众号「古时的风筝」,专注于Java技术及周边生态。文章会收录在JavaNewBee中,更有Java后端知识图谱,从小白到大牛要走的路都在里面。有朋友聊到他们的系统......
  • Citrix Linux VDA 2209的全文解析
    本文翻译自TerryHou的BestpracticestoensureyouhavetheCitrixLinuxVDAsupportyouneed。随着最近CVAD2209和CitrixLinuxVDA2209的发布,CitrixLinuxVDA现在......
  • 分布式搜索引擎01-- elasticsearch基础
    分布式搜索引擎01--elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强......
  • 分布式搜索引擎02-elasticsearch的数据搜索功能-DSL和RestClient实现搜索
    分布式搜索引擎02在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。所以今天,我......
  • 分布式搜索引擎03-数据聚合
    分布式搜索引擎030.学习目标1.数据聚合聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高......
  • 【MySQL8】中文分词支持全文索引
    参考:https://blog.csdn.net/qq_54169998/article/details/122471199第一步:配置文件my.ini(Windows10默认路径:C:\ProgramData\MySQL\MySQLServer8.0)中增加如下配置......
  • HDC 2022重磅首发《鸿蒙生态应用开发白皮书》,附全文
     11月4-6日,华为开发者大会2022(HDC)在东莞松山湖举办,会上重磅首发《鸿蒙生态应用开发白皮书》!(以下简称《白皮书》)该书全面阐释了鸿蒙生态下应用开发核心理念、关键能力......
  • idea插件Tranlation配置有道搜索引擎
    idea配置有道翻译引擎一、更换翻译引擎原因由于Google在2022年9月末宣布关闭GoogleTranslate在中国的服务,原本在chrome浏览器和idea上使用的google翻译引擎也不能正常使......
  • 全文检索match_phrase
    phrase的作用是短语匹配。比如我插入一条创建一个索引并且插入数据,并且以nameisxiaohong开始作为关键短语开始查询PUT/test/_doc/1{"desc":"hello,mynameisxi......