【linux 开发】8 个基于 Lucene 的开源搜索引擎

博客内容介绍了8个基于Lucene的开源搜索引擎,包括Apache Solr、Elasticsearch、IndexTank、Katta、Bobo Search、Compass、Summa和Constellio,详细阐述了它们的特点和应用场景。
摘要由CSDN通过智能技术生成

自行下载安装了Solr安装运行并建立索引后,可以通过curl或自带的控制台程序进行文本搜索,使用curl搜索结果如下,可以看到我们的quikstart.html文档中包含features词,利用此服务器我们可以开发自己的文本搜索系统,首先用solr为文本建立索引,然后自行开发客户端向solr发送url,从而获取返回的json信息用于展示,实现搜索功能。

[root@localhost docs]# curl "http://localhost:8983/solr/gettingstarted/select?q=*features*&wt=json&indent=true"       
{
  "responseHeader":{
    "status":0,
    "QTime":55,
    "params":{
      "indent":"true",
      "q":"*features*",
      "wt":"json"}},
  "response":{"numFound":26,"start":0,"maxScore":1.0,"docs":[
      {
        "id":"/home/solr/solr-5.0.0/docs/quickstart.html",
        "title":["Solr Quick Start"],
        "stream_content_type":["text/html"],
        "stream_size":[32319],
        "content_encoding":["UTF-8"],
        "x_parsed_by":["org.apache.tika.parser.DefaultParser",
          "org.apache.tika.parser.html.HtmlParser"],
        "content_type":["text/html; charset=UTF-8"],
        "resourcename":["/home/solr/solr-5.0.0/docs/quickstart.html"],
        "dc_title":["Solr Quick Start"],
        "_version_":1492164945436999680},

Lucene是一种功能强大且被广泛使用的搜索引擎,以下列出8种基于Lucene的搜索引擎,你可以想象他们有多么强大...

Apache Solr
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。http://lucene.apache.org/solr/ 

浅谈网络搜索引擎的实现 知识管理系统网络搜索模块开发实践交流 功能需求 可自定义要搜索的网站列表(以下简称目标列表) 可对目标列表网站的网页内容进行检索 可对目标列表网站的网页内容进行自动分类处理 可自定义更新周期及一些相关性能参数 系统主要功能模块 网络蜘蛛 采集、解析并保存目标列表网站的内容(网页) 全文索引/检索 为目标列表网站内容建立索引 提供内容的全文检索 自动分类 对目标列表网站内容进行分类 基本流程 网络蜘蛛 功能概要 目标文档地址队列 w/r 目标文档(网页)获取 目标文档保存 文档解析并得到新的目标文档地址队列和文档正文内容 网络蜘蛛 当前版本的实现 多线程 Apache HttpClient Hsql HTML Parser 全文索引/搜索 什么是全文索引? 为了快速搜索大量的文本文件 为一本书建立关键词的索引“书签” 什么是全文搜索? 在索引中查找关键字的过程,找到关键字在哪些地方出现 全文索引/搜索 Lucene简介 高性能、可扩展的信息检索工具库 为应用程序添加索引/搜索功能 一个典型的应用: 全文索引/搜索 全文索引/搜索 Lucene索引过程的核心类 IndexWriter :提供对索引的写入操作 Directory:描述了索引存放的位置 Analyzer:对文本进行分析,提取词汇(token),剔除无用的信息 Document:虚拟的文档 Field:每个Document包含一个或多个不同命名的Field,每个Field对应一段数据,这些数据在搜索过程中可能会被查询或在索引中被检索 全文索引/搜索 Lucene索引代码示例: Directory dir = FSDirectory.getDirectory(indexDir); Analyzer anlyzer = new SimpleAnalyzer(); IndexWriter writer = new IndexWriter(dir, analyzer, true); Document doc = new Document(); doc.add(Field.Keyword(“id”, “1000”); doc.add(Field.UnIndexed(“name”, “Yao Ming”); doc.add(Field.UnStored(“intro”, “Yao Ming is a player of Houseton Rockets.”); writer.addDocument(doc); writer.close(); 全文索引/搜索 Lucene搜索过程的核心类 IndexSearcher:用于搜索IndexWriter创建的索引 Term:用于搜索的一个基本单元包括了一对字符串元素,与Field相对应 Query :抽象的查询类 TermQuery:最基本的查询类型,用来匹配特定Field中包含特定值的文档 Hits:存放有序搜索结果指针的简单容器 全文索引/搜索 Lucene搜索代码示例: IndexSearcher searcher = new IndexSearcher(directory); Term t = new Term(“intro”, “Yao”); Query query = new TermQuery(t); Hits hits = searcher.search(query); assertEquals(“JUnit test”, 1, hits.length()); Lucene的线程安全性 不允许使用多个IndexWriter或IndexReader实例同时对一个索引进行修改 IndexWriter和IndexReader是线程安全的,可以被多线程共享 全文索引/搜索 中文分词器 最大匹配法(机械分词):按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功。 二元分词 一元分词 自动分类 向量距离分类算法 根据算术平均,为每类文本集生成一个代表该类的特征向量 提取待分类文本的特征向量 计算该向量与每类特征向量之间的相似度 判定文本属于与文本距离最近相似度最大的类别 自动分类 相似度计算公式: 系统基础类图 Road map 自动分类学习 中文分词算法改进 支持多种格式的文档(doc, pdf…) 海量网站搜索的支持(分布式处理) 系统框架的优化和迭代改进
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值