- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
solr技术方案
Solr技术方案
一 用户需求
以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。
需求原型:
业界通用的做全站搜索的基本上两种:
1 选择googleAPI,百度API做。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的SEO做的也不是很好,对于动态的很多ajax请求需要做快照,所以暂时不采用。
2 选择现有成熟的框架。
这里我们选择使用solr。
Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。
这里我们主要需要以下几种功能:
1 可用性及成熟性。
2 中文分词。
3 词库与同义词的管理(比如我们使用最高的:股票代码)。
4 高亮显示。
5 方便的导入数据。
6 Facet的轻松配置
7 扩展性。
二 Solr的体系结构
体系结构
Solr体系,功能模块介绍及配置。
以上是solr的架构图。具体应用时需要理解一下模块的作用及配置。
RequestHandler:接受请求,分发请求。另外也包含导入数据,如importhandler。
UpdateHandlers – 处理索引请求。
Search Components:作为handlder的成员变量。处理请求。
Facet:分类搜索
Tika:apache下处理文件的一个项目。
Filter,spelling : 处理字符串
Http query/update Database/html importhandler 默认基本可以满足要求。如果不够则扩展相应的handler和component。
丰富的客户端
Ruby/php/java/json/javascript
使用solrj
以上的配置在solrconfig.xml,schema.xml中配置
分词的解决办法
系统提供了很多种分词方案。
?StopAnalyzer,StandardAnalyzer,WhitespaceAnalyzer只是实现了数字、单词、E-mail地址、IP地址以及中文字符的分析处理,但是对于中文的分析并不好。
对于中文分词有几种解决方案。
Paoding: 100万汉字/s(/p/paoding/)
Imdict: 26万汉字/s (/p/imdict-chinese-analyzer/)
Ik: 160万汉字/s (/p/ik-analyzer/)
Mmseg4j: simple 1900kb/s 准确率98%(/p/mmseg4j/)
注:官方提供测试环境各不相同。
这里我们选择准确率最高的Mmseg4j。
而且配置起来也十分简单。我们只是需要在schema中配置以下fieldType即可。
fieldType name=textComplex class=solr.TextField positionIncrementGap=100
analyzer type=”index”
tokenizer class=com.chenlb.mmseg4j.solr.MMSegTokenizerFactory mode=complex dicPath=../dic /
filter class=solr.StopFilterFactory ignoreCase=true words=stopwords.txt /
/analyzer
analyzer type=”query”
tokenizer class=com.chenlb.mmseg4j.solr.MMSegTokenizerFactory mode=complex dicPath=../dic /
filter class=solr.SynonymFilterFactory synonyms=synonyms.txt ignoreCase=true expand=true /
filter class=solr.StopFilterFactory ignoreCase=true words=s
文档评论(0)