51
回答
高手问答第 182 期 —— 来聊聊老牌开源全文检索引擎 Solr
华为云4核8G,高性能云服务器,免费试用   

OSCHINA 本期高手问答(12 月 20 日 - 12 月 26 日)我们请来了@vnetoolxw 兰小伟和大家一起探讨关于 Solr 的问题。

兰小伟(网名:益达),资深 Java 工程师,在 Java 技术上有很深的积累和造诣。国内较早接触 Solr 的技术专家之一,长期致力于 Solr 的技术研究、实践和生产环境部署,是 Solr 社区的积极参与者和实践者,以能让 Solr 技术能够在中国得到广泛应用不遗余力并乐此不疲。

现就职于国美金融,曾混迹于各种大大小小的创业型公司并以此为生。个人技术涉猎广泛,除了 Java 之外,对 jQuery、ExtJS、AngularJS 等前端技术也有研究。

相信只要接触搜索引擎这个领域,Solr 这个开源项目是绝对不能绕过去的。Solr 作为 Apache 基金会的顶级项目,技术成熟而且用户量巨大。在 Elasticsearch 未问世之前,甚至可以说搜索引擎就等于 Solr 加上 Lucene。本期高手问答,兰小伟将会和大家一起探讨关于 Solr 的问题。

本期问答内容:

  • 全文检索
  • 全文检索引擎 Solr 的特色
  • 如何入门全文检索领域
  • 使用 Solr 搭建搜索引擎的思路和实现
  • 全文检索领域的相关算法
  • 同类项目的对比和选择
  • 相关实用的开源项目或工具推荐

或有其他关于 Solr 的问题,也欢迎大家积极提问!

为了鼓励踊跃提问,@华章 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Solr权威指南:上卷》一书。

>>>点击这里进入购买地址

随书示例源码下载地址:https://github.com/yida-lxw/solr-book

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Solr 相关的问题向兰小伟提问,请直接回帖提问。

举报
局长
发帖于7个月前 51回/4K+阅
共有51个答案 最后回答: 4个月前
项目中实际遇到的,在电商项目中,避免不了各种排序,加权,在查询solr的时候,在bf里面带上一大串公式,这样造成查询很慢,目前有一种解决方法就是,看源码,把计算公式得分的这个函数找出来,然后在建立索引的时候,把一部分公式分数就算出来,存到索引里面。查询的时候直接使用上面计算出来的分数,这样可以减少查询的时候的公式计算。我周围有人已经把公式跟出来了,在项目中已经用上了,但是对于我们这种新手来说难度有点大,各位有什么其他办法没有。
--- 共有 1 条评论 ---
vnetoolxw简单点就是自定义Function来实现,如果你需要完全干预Solr的打分机制,按照自己的打分规则,最终根据自己的打分规则计算出来的分数来实现个性化排序。 7个月前 回复

@vnetoolxw solr如何针对针对多字段实现精准搜索展示以及如果设置多字段的搜索权重,比如搜索目标字段A、B、C,如果实现精确匹配时优先展示,同时展示优先级A>B>C ?

--- 共有 2 条评论 ---
OSC_zrcqjn 回复 @vnetoolxw : 这回复功能挺不错的哈 7个月前 回复
vnetoolxwSolr支持对域进行设置权重,也支持对短语进行设置权重,精确匹配时,你设置更高的权重即可使其靠前显示。 7个月前 回复

@vnetoolxw 请问搜索返回时返回所有字段还是id再去查询详细好一些?

--- 共有 1 条评论 ---
vnetoolxw一般建议大文本内容通过solr的索引主键去外部系统再次查询,因为solr查询返回太多存储域,会导致大量的磁盘IO进行索引数据读取,当你的Solr查询性能不高时,这是一个优化点。但不是说一上来就全部从外部系统加载。 7个月前 回复

@vnetoolxw 项目起步,在不知道用户量到底会有多大的情况下,初期不太复杂的搜索,是否需要直接使用solr?

--- 共有 1 条评论 ---
vnetoolxw用不用Solr取决于你的业务需求,如果传统的关系型数据库的SQL查询满足不了你的业务需求,那么你可以考虑选择使用Solr,但是选择它之前你们的Team里需要有一个成员能够Hold得住它,不然无人有填坑能力,那就是给自己挖坑。另外还要考虑开发带来的人力成本以及项目工期是否允许你更换新的技术方案。 7个月前 回复

@vnetoolxw  Solr 有哪些公司在使用??

--- 共有 1 条评论 ---
vnetoolxw每个公司的IT技术部一般都有多个项目组,有的组可能会用到Solr,有的组可能会选择ES,具体哪些公司在用Solr,我没有调查过。 7个月前 回复

@vnetoolxw         Solr 结合spark集群应该怎么使用?  Solr 基于大数据上,  对比 Elasticsearch , 有啥优缺点??

--- 共有 1 条评论 ---
vnetoolxw一般使用Spark来实时处理大数据集,比如你HDFS上有几百G的文件数据,你想要将其写入到Solr建立索引,那么你可以借助Spark的实时内存计算能力来高效完成这个任务。至于怎么使用Spark与Solr结合,这就需要你去学习了解Spark啦,Spark有提供直接将DataFrame写入Solr的API的。Solr相比ES更成熟稳定,你值得信赖,如果你对实时性查询要求不高,建议你使用Solr,否则反 7个月前 回复

@vnetoolxw Solr7相对Solr6有哪些较实用的新功能,书中有没有Solr7部分的介绍?

--- 共有 1 条评论 ---
vnetoolxwSolr7.x中新增了两种新的副本类型:TLOG和PULL,从而改善SOlrCloud的故障切换的可靠性,,此外还新增了自动缩放功能,以便于用户能提供一个规则来定义如何在集群中分发节点和碎片的首选项和策略。这两点主要是集中在Solr集群维护上。还有就是Solr的无Schema模式的改进,另外我觉得改动比较大的就是schema.xml中原先所有以Trie开头的域类型在Solr7.x中由以PointF 7个月前 回复
顶部