一、前言:为何选择Solr

由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有几种方案可供选择:

  1. 基于Lucene自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。

  2. 调用Google、Baidu的API实现站内搜索。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。

  3.基于Compass+Lucene实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤其是替代传统的like ‘%expression%’来实现对varchar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程度的封装,暂时不采用。

  4.基于Solr实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案,后期加入Compass方案。

二、Solr简介

  Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。

Solr自身的一些重要特性有:

  1、服务器可以通过HTTP与XML和JSON格式的数据通信。

  2、配置文件,主要配置索引的方式,它定义了域的信息和域的文本分析方式。

  3、服务器Cache可以更快的提供搜索响应。

  4、基于页面的管理接口,包括:

    A、运行时搜索和Cache性能统计信息

    B、查看每个域的统计信息

    C、调试文本分析的工具

  5、Faceting

  6、dismax查询查询语法解析器比Lucene原生的查询解析器更好用。

  7、通过距离进行地域搜索

  8、支持分布式搜索和索引复制,所支持Solr处理大数据扩展

  9、Solritas:一个web搜索示例UI,它展示了许多Solr的搜索特性。

另外,还有两个contrib模块使Solr的功能更完善:

  10、DataImportHandler(DIH):它有导入数据库,e-mail,和爬虫爬取的数据的能力。它还包含一个调试工具。

  11、Solr Cell:一个针对Apache Tika的配接器,它可以从多种格式的文件中提取文本内容。

三、solr各组件之间的关系图

四、solr输入输出示例图

五、solr原理图

六、solr系统架构图

更多此类信息请自行去网上搜索,不再赘述。

最新文章

  1. gitlab
  2. Java相对路径读取文件
  3. Orion Network Performance Monitor 软件在网络管理中的应用
  4. 395. Longest Substring with At Least K Repeating Characters
  5. chapter 13_1 算术类的元方法
  6. repo 和git的用法
  7. 洛谷4月月赛R1
  8. 【CQOI2012】局部极小值
  9. Nginx+Keeplived双机热备(主从模式)
  10. adb shell命令行
  11. 在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决
  12. 你应该知道的CSS2.0中最常用的18条技巧
  13. delphi 编译生成ipa文件 adhoc步骤
  14. block本质探寻五之atuto类型局部实例对象
  15. gradle平级项目引用
  16. StoryBoard学习(5):使用segue页面间传递数据
  17. ubuntu 编译并安装resin3.1.12+nginx1.2.6
  18. C++函数指针和类成员函数指针
  19. 如何删除hive表格的分区
  20. go语言之并发编程 channel(1)

热门文章

  1. 11.8---维护x的秩(CC150)
  2. VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
  3. Tomcat配置文件server.xml详解
  4. 转:jquery向普通aspx页面发送ajax请求
  5. java面试宝典(蓝桥学院)
  6. haproxy simple cfg
  7. OracleBulkCopy
  8. POJ 3009
  9. linux shell 中 printf 与 echo的区别
  10. Android 的 AlarmManager 和 wakeLock联合使用