`
seraphim.leo
  • 浏览: 24104 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

全文检索学习及Apache SOLR的使用探索

 
阅读更多

最近,由于工作需要,准备在项目中搭建一个全文检索系统,预期实现的功能基本上与目前流行的全文检索别无二致。主要是提供给用户普通检索与高级检索的两种方式,可以实现根据发布内容时间排序,统计,等等相关的功能。

因为公司目前没有相关的产品同时客户给出的需求也是模棱两可,所以只能参考其他网站的功能来进行简单的需求分析。苦于之前没有接触过相关知识,并且选用的Apache SOLR开源服务器也没有详细的中文教程,做起来还是蛮吃力的,不过好在SOLR的官方文档比较详细,其在开源社区的活跃度也蛮高,如果用心去读官方文档的话还是受益良多的,而且一般的问题都是可以解决的。废话不多说,下面列出一个从开始学习全文检索到使用SOLR来开发自己的全文检索应用的一个大致过程,希望对各位需要学习相关知识的却苦于摸不着头脑的朋友有所帮助。

 

1.全文检索基础

如果你不是想要深入研究,而是像我一样急功近利的话,这里大概需要1-2天的时间看看就可以,你需要了解的知识点是:什么是全文检索,全文检索中的一些基本概念,其实就是多了解底层的一些术语,因为在后期开发的过程中这些术语会经常用到,如果你不了解,那就很吃亏。这里不用太多的时间就可以搞定。

2.Lucene

Lucene是神马,如果你想要做全文检索的话,这个自然不用多说,其实在我还没接触全文检索的时候,大名鼎鼎的Lucene就已是如雷贯耳,当然,也仅仅是这样,当我真正的要去学习的时候才发现,哦,原来这个家伙是这么牛逼。不过同上一样,如果你不是真的准备自己来手工编写包括建立索引,查询等等相关的底层功能的话,我的建议是这里花费1-2天的时间看看即可,因为当你了解到后续的SOLR是如何强大的时候,你会对你在Lucene花费的时间过多而懊悔不已。当然,我就是这样的。当我刚学了Lucene曾自己写了一个建立索引的工具,不过无论我如何去修改线程及优化内存,始终达不到SOLR那样的效率及便利性,当然这是后话。当时40W的数据建立起索引大概需要将近20分钟,而同样的使用SOLR时间几乎缩短的了一半,并且在处理数据库的CLOB大字段时,也不会有内存溢出等让人抓狂的事情发生。

3.SOLR

可能有些人在接触SOLR之前都听说过Compass,比如我,当然我仅仅是在一些相关的教程中听说过却并没有真正的用到过他。所以没有办法比较这两者之间差异,我想同是开源软件应该各有千秋吧。由于本文仅仅是想要列一个提纲,给希望学习的人一些帮助,SOLR的详细内容会在后续的文章里慢慢介绍,这里只写一个大致的学习过程, 首先,需要了解的是SOLR是干什么用的,作为一个服务器需要如何配置,怎样启动,如何通过配置文件来建立数据库内容的索引(这里插一句,我认为大多数系统可能都是需要针对数据库的数据来建立索引的,当然,SOLR可以提供的建立索引内容不不仅仅是数据库,还包括了XML,JSON甚至真正的文档比如Word,PDF等,当然这些我没用过,所以可以根据自己的实际需求来了解相关文档如何去建立索引),还有需要学习查询,SOLR可以提供的查询是比较丰富的,包括了基本的查询,分组,结果过滤,排序及统计等功能,这些在其官网的WIKI中有比较详细的介绍,可以自行查找。值得一提的是,之前在我自己写的基于Lucene的建立索引工具中数据库CLOB字段的建立确实很让人头疼,不但拖慢了创建索引的时间,还拖垮了系统(经常会内存溢出),当时是为了解决这个问题才想到了要使用一些现有应用的,也就找到了SOLR,SLOR对于CLOB的支持真的是太好了,你只需要在数据源配置的data-config.xml文件中配置clob=true即可提供对大字段的支持,这真的是太牛逼了。

4.SOLRJ

是的,你没看错就是SOLRJ,这是SOLR提供的一个基于Java的Client包,在你下载的SOLR的包内就能找到,以及该包所依赖的全部类库,有了这个包,你几乎可以在你的Client程序中对如何连接SOLR服务器,如何创建查询条件,如何获取查询结果等这样的细节问题视而不见,因为这个包里提供的方法基本可以覆盖你的Client程序,你需要做的仅仅是把这个包引如你的工程,然后将其进一步封装成你所需要的程序就可以了。他的一些实用方法有些类似于hiberante等这样的ORM框架,这么说当然并不准确,实际体验还是需要各位自己去体会的。

 

好了,基本上就是这些内容,剩下的就需要动手写你的客户程序了,不过有了SOLR的支持,我想整个过程会变的非常轻松。归纳一下整体的学习时间安排,前两项大概需要2-3天时间来完成,多了解了解基础,绝对是件好事,如果你像我一样对算法等具有恐惧感的话,就不要深挖了,然后在SOLR的学习过程中可能需要的时间比较多我觉得一周左右的时间还是够用的,作为一个服务端,合理的配置及优化绝对是对后期工作有决定性的帮助,如果你的索引每次在开发的时候都要进行修改,这绝对是一种浪费时间,无论SOLR有多么的强大,当然你也可以像我这样,趁着建立索引的空档写一篇口水文出来o(*≧▽≦)ツ,至于SOLRJ,我还是建议在你的客户端使用,这样减轻了好多不必要的劳动,重复造轮子可是大忌。

最后,感谢您舍得时间来看这篇烂文章(高考作文零分这件事我会乱讲?)。

 

0
0
分享到:
评论

相关推荐

    solr全文检索中需要用到的apache-solr-1.4.1.zip

    solr全文检索中需要用到的apache-solr-1.4.1.zip

    apache-solr-3.5.0.jar

    包涵apache-solr-core-3.5.0.jar和apache-solr-solrj-3.5.0.jar两个文件,搭建solr全文检索环境必须要添加的包

    全文检索solr7.5.0

    Solr 是Apache下的一个顶级开源项目,采用Java开发,基于Lucene的全文搜索服务器。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。这里谈到了Lucene,它是一个开放源代码的全文检索引擎工具包。提供了完整的...

    Apache Solr初级教程.docx

    内容概要: 介绍、安装部署、Java接口、...Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。

    apache-solr-ref-guide

    java开发中使用全文检索技术,solr是一款很好的全文检索框架。

    Solr 全文检索服务器.md

    Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。

    Apache_Solr_初级教程

    本文介绍的Apache Solr 即是一个基于Lucene 的全文检索服务,通过本文的介绍您将了解到如何安装、使用和 扩展Solr 全文检索服务。

    solr增强hbase检索.

    solr增强hbase检索...1547548620.pdf.

    nodebb-plugin-solr:使用Apache Solr全文搜索NodeBB

    Solr(发音为“ solar”)是来自Apache Lucene项目的开源企业搜索平台。 它的主要功能包括全文搜索,命中突出显示,多面搜索,动态聚类,数据库集成以及丰富的文档(例如Word,PDF)处理。 此插件扩展了NodeBB的...

    solr全文检索实现原理

    Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...

    Apache Solr组件安全概览1

    声明:本篇章由Skay@QAXCERT原创,仅于技术研究,不恰当使会造成危害,严禁违法使 ,否则后果负。录、组件概述1. 关键词企业级全检索服务器、基于 Luc

    基于Apache Nutch和Solr的AJAX页面内容爬取与处理设计源码

    该系统通过Apache Nutch和Solr以及Htmlunit, Selenium WebDriver等组件扩展,实现了对于AJAX加载类型页面的完整页面内容爬取、解析、清洗、持久化、全文检索等处理。项目结构清晰,代码注释详尽,适合用于学习和研究...

    solr_rce:通过Velocity模板的Apache Solr RCE

    其主要功能包括全文检索,命中指示,分面搜索,动态聚类,数据库集成,以及富文本的处理。2019年10月30日,国外安全研究人员放出了一个关于solr模板注入的exp,攻击者通过未授权访问的solr服务器,发送特定的数据包...

    Solr 3.6.0 API CHM格式

    Apache Solr API 文档 chm格式带索引和全文检索,方便携带和查询 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开...

    solr_architecture

    solr_architecture,solr的架构图说明,可以很好的理解solr的整体架构。

    lucene-5.3.0+solr-5.3.0 jar包和文档示例

    Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,...

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包 完整的工程部署包 apache-solr-3.6.0.xml 放入apache-tomcat-7.0.27\conf\Catalina\localhost

    Solr Reference Guide

    Apache solr 基于 lucene 搜索引擎构建的 java 检索工具。本书是solr 的参考指南。

    基于SOLR的电信增值业务信息检索系统的设计与实现

    SOLR 是一个开放源代码的全文本搜索引擎,是以Lucene 为基础实现的搜索引擎 应用程序,隶属于Apache Software Foundation 项目。本文给出了一种利用SOLR 搜索引擎。在电信级的应用中提供餐饮信息检索的方法。文中...

Global site tag (gtag.js) - Google Analytics