热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Solr构建企业级的全文检索(一)---------开篇

换了个工作单位,也就换了从事的项目的业务类型。新的项目中要需要使用全文检索功能,由于项目是基于SQLserver的应用,所以旧的设计也就使用了SQLserver的Full-textSearch

换了个工作单位,也就换了从事的项目的业务类型。新的项目中要需要使用全文检索功能,由于项目是基于SQL server的应用,所以旧的设计也就使用了SQL server的Full-text Search Engine来实现全文检索功能。在使用SQL server 的全文检索功能的过程中,发现有很多的问题不能很好的解决,比如Cache,一般来说,对于SQL server的缓存也就是执行计划的缓存和查询结果的页面缓存,远远不够,而且也很难根据自己的业务需要去调整缓存的参数。另外对于多语言的分词算法问题,SQL server虽然内置了50多种语言的支持,但是都不够完美,如果自己想要进行替换,应该是很困难的。还不支持Highlighting,还有现在应用很广泛的Faceting以及Field Collapsing。客户推荐我们使用一下Solr来改进全文检索功能,所以我就花了些时间来研究了下Solr,并打算写一些文章总结一下Solr的使用,也希望对各位同学有帮助吧。

    唧唧歪歪说了一堆,现在就进入正题吧 。

首先介绍一下Solr是什么。要说Solr,先说说Lucene。Lucene是Apache基金会一个全文检索库类库的项目,这个项目的开源的,这个类库是使用Java开发的,功能非常强大,如果大家感兴趣可以去看看http://lucene.apache.org/.当然这个类库也有几个其它语言的实现,比如Python,也有.net的叫做lucene.net,不过因为社区活跃度不高,Apache基金会已经不再赞助这个子项目了。 如果哪位同学希望把全文检索的功能集成在自己的系统里面,或者扩展luence的全文检索功能,那应该好好学学Lucene。如果你只想使用全文检索,对底层的算法和逻辑既不想研究也不想干预,那么Solr可能是一个更好的选择。简单的说,Solr就是使用Lucene库实现的一个http服务,当然他也做了很多的扩展。你可以将Solr部署在任何一个Java Serverlet容器里,比如Tomcat,Jetty。你可以通过RESTful的url就可以和Solr进行通信,进行文档的indexing和检索。这样一来,易用性就得到大大的提升,因为不管你的项目是基于什么操作系统平台的,使用什么语言开发的,只要你能和http服务器进行通信,就能非常简单快捷的在你的项目中实现全文检索功能。如果要更加详细的谅解Solr的相关信息,请访问:http://lucene.apache.org/solr/

接下来我们需要下载和部署Solr。从 http://mirror.bjtu.edu.cn/apache//lucene/solr/这个页面里选择下载最新的版本,目前是3.5.0,刚刚出炉的。在安装前有几个准备工作要做。Solr是用Java实现的,所以毫无疑问Java的虚拟机是要的,不管你是在Window上安装,还是在Linux上安装,点击这里下载JDK,安装完JDK别忘了检查JAVA_HOME环境变量是否设置了。另外,如果你打算使用Tomcat的话,那就得先安装Tomcat,点击这里了下载。其实在实践和练习的时候是用Jetty是比较方便的。如果你在windows上使用Solr,那么把刚才下载的Solr文件包加开,使用dos 命令行控制台进入example目录,输入java -jar start.jar,然后回车,如果没有什么异常信息,Solr就启动起来了。现在你打开浏览器,输入http://localhost:8983/solr/admin/,就可以进入Solr的管理控制台了,如下图

简单的安装已经完成,可以进行文档索引和查询了。

今天的开篇就到这里吧,算是准备了一个环境。后续我会写一系列文章来介绍Solr的使用。

在提供一些对大家准备环境有帮助的信息:

Solr client for .Net --google code上的项目,项目的负责人很积极,如果你提交了Issue或者Defect,他会持续的关注和反馈。

 

         

 


推荐阅读
  • Lucene 全文检索技术入门
    一、搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的出现与spider(网络爬虫)发展:excite、galax ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • javajigsaw2015年12月1日,星期二,在OpenJDK邮件列表中,MarkReinhold确认了许多人的期望:J ... [详细]
  • 大二修完java的基础入门,发现自己对这门语言有兴趣,想深入自学,但是一方面不知道怎么深入,另一方面想了解我毕业后能找哪方面的工作。我不想做单纯的程序员,不想每天都是敲代码。所以请过来人帮忙解疑。 ... [详细]
  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一 ... [详细]
  • MDI窗体容器-放窗体的容器窗体时顶级控件,是不允许放到其他的控件或窗体中的(李献策lxc)窗体属性中有一个属性:IsMdiContainer-确定该窗体是否是MDI容器在窗体中 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 开发笔记:使用JavaScript解决网页图片拉伸问题
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用JavaScript解决网页图片拉伸问题相关的知识,希望对你有一定的参考价值。 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
author-avatar
虚线老母阳
推荐一首歌《春风十里》,我的个人订阅号:虚线老母阳
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有