目录
5. 关于 IK 分词器扩展词汇实现自动添加用户搜索热词的方法.你有什么见解?
6. 你们 solr 有专门的地方维护吗?是手动添加还是?(同步问题)
1. 讲一下 solr 吧
-
嗯,solr在我们项目中主要是做站内搜索的时候用的Solr,我知道他底层是基于Lucene开发的一个站内搜索引擎,我们项目中一般用它做全文检索,他搜索的时候是通过词条进行搜索,因为mysql数据库具有I/O读写瓶颈问题,分布式系统的数据量一般比较大,我记得mysql单表最大存储数据量是350w多条,这个我也没测试过,看资料提到过,一旦数据量过大,必然会引起查询速度慢,服务器资源耗费多等各种问题,所以这时近时搜索引擎solr就是专门解决这种问题的技术实现
2. 为什么要用 solr
-
因为mysql数据库具有I/O读写的瓶颈问题,分布式系统的数据量一般比较大,但是mysql单笔最大存储量是350w多条(这个没测试过,是看资料提到过),一旦数据量过大,必然会引起查询速断慢,服务器资源耗费多等各种问题,所以这时近实搜索引擎solr就是专门解决这种问题的技术实现。【当然除了solr还有lucence,还有Elasticsearch,solr前身就是lucence,对于elasticsearch也是基于lucence,它的特点的话是实时搜索效率比较高效,然后elasticsearch只支持json形式,而solr支持多种数据类型格式】
3. Solr 在项目中怎么用的
4. Solr 分词器有什么效果?
-
solr在搜索的时候本来就是利用词条为索引库进行搜索的,所以我理解的分词就像是索引一样在solr索引库中存在,还有solr是老外开发的,所以分词是根据英语单词进行自动分词,但是中文的话无法识别,每个字都认为是一个词汇,所以我们在使用solr的时候需要配置一个IK中文分词器使用的。
5. 关于 IK 分词器扩展词汇实现自动添加用户搜索热词的方法.你有什么见解?
-
所谓热词就是用户经常搜索到的词语,我们给他放到自己的分词器里当成一个词进行搜索,比如说经常说到的"上海外滩',这样的词就可以当做热词,我也没有在项目里实际的做过,但是我知道在大数据里有一个wordcount技术可以实现这个热词分析,他是结合的redis一起使用的,redis作为一个计数器,HBASE作为数据的存储,然后统计出搜索次数比较多的词条配置到solr权重中。
6. 你们 solr 有专门的地方维护吗?是手动添加还是?(同步问题)
-
我们用的是SpringDataSolr来操作的solr索引库,我们项目在第一次上线的时候,会手动往 solr 索引库导入一批数据,后期就不用人工干预了,我们后台添加了相应的商品之后,商品审核通过的时候,用的 ActiveMQ 往里面发送一条消息,商品的 ID,然后在 solr 这个 search 这个工程中,我们会接收到这个 id,然后根据这个 id 从数据库里面查询出来该商品信息,把数据添加到我们的索引库里边去,增量更 新,维护大概就是这样,
7. 全文检索谁来定?
-
由 业务 来 定 。比 如说 做 商品 检 索时 ,时 搜索 商 品的 名 称,卖 点 ,描述 。以 这 些业 务 域进 行 所搜 的
8. ElasticSearch 和 Solr 的区别?
-
我知道他两的底层都是基于Lucene实现的,都是使用的lucene的倒排索引实现的,solr在实现建立索引的时候会产生io阻塞查询性能会比elasticsearch差一些,还有就是因为solr自身不支持分布式,elasticsearch是实时处理数据,而且默认支持分布式的,可以组成一个网络,如果其中一台服务器宕机,会分配其他节点工作,可以扩展多台服务器,所以查询效率会更快,据说可以处理PB以上级别的数据