摘要: 一、IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSearch则要简单得多。由于打开一个IndexReader需要较大的系统开销,因此最好是在所有搜索期间都重复使用一个IndexReader实例,只有在必要的时候才打开新的IndexReader。 另外,还可以从索引目录中直接创建IndexSearcher,这种情况下,系统会在后台建立自己私有的IndexReader,如果此时关闭Searcher,那么它同事也会关闭自己的IndexReader。因为IndexReader是由IndexSearcher打开的..阅读全文
posted @ 2014-04-10 17:55 逆心 阅读(404) | 评论 (2) 编辑
摘要: 一、分词的方法 分词的方法主要有以下几种: 1、单字切分 单字切分就是把一段文字按照每个字去建立索引。 如果用来切分“我爱你伟大的中国”,就会切成“我”,“爱”,“你”,“伟”,“大”,“的”,“中”,“国”。这种分词效率低,但也能解决一些问题,聊胜于无。 2、二分法 二分法就是把一段文字的每两个相邻的字算作一个词。同样对于上面的句子就会切成“我爱”,“爱你”,“你伟”,“伟大”,“大的”,“的中”,“中国”7个词。 3、词典法 词典法就是建立一个词典文件,然后使用词典和文字段落进行匹配,从而得出分词结果。在这种分词方法中,词典和匹配算法是关键。 做词典很容易,维护词典也不能...阅读全文
posted @ 2014-04-09 10:24 逆心 阅读(723) | 评论 (0) 编辑
摘要: 一、提取搜索结果 1、TopDocs对象的说明MaxScore:最高得分;TotalHits:匹配到的结果总数;ScoreDocs:匹配到的文档数组(内部可以获得文档Id与分数); 下面来看看获得的结果信息: Console.WriteLine(docs.MaxScore); //输出最高得分 Console.WriteLine(docs.TotalHits); //输出搜索结果数量 foreach (ScoreDoc d in docs.ScoreDocs) //输出文档得分与文档ID { Console.WriteLine(...阅读全文
posted @ 2014-04-03 16:48 逆心 阅读(255) | 评论 (0) 编辑
摘要: 一、解析搜索请求 搜索请求的概念是,用户输入关键词,然后程序去分析关键词,获取用户搜索的真实意图。 Lucene提供了一套QueryParser类,用来解析搜索请求。这个类是可以使用的。 1、QueryParser的基本使用 QueryParser用来分析用户输入的关键词,将关键词转换成Query对象。其构造方法如下所示: QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, "title", new StandardAnalyzer(Lucene.Net.Util.Version.L阅读全文
posted @ 2014-04-02 12:07 逆心 阅读(775) | 评论 (0) 编辑
摘要: 一、索引管理 1、查看索引的相关信息 查看索引的信息大概有如下方法:通过IndexWriter类读取索引的相关信息,将其显示出来。通过IndexReader及其子类读取索引的相关信息,将其显示出来。通过可视化工具查看索引的相关信息。 1、使用IndexWriter类读取索引的相关信息 使用IndexWriter读取并非最佳方法。 2、使用IndexReader及其子类读取索引的相关信息 IndexReader类是专门用于读取索引信息的类,它是一个抽象类,含有FilterIndexReader、MultiReader、ParallelReader等子类。 IndexReader类通...阅读全文
posted @ 2014-04-01 10:11 逆心 阅读(382) | 评论 (0) 编辑
摘要: 一、执行搜索的基本方式 使用Lucene.net执行搜索,首先要创建IndexSearcher对象,然后通过Term和Query对象来封装用户输入的搜索条件,最后将结果封装在Hits对象中,返回给用户。 1、创建搜索器对象:IndexSearcher 创建IndexSearcher对象的方法:如下: IndexSearcher searcher = new IndexSearcher(索引目录实例); 创建IndexSearcher对象很容易,创建完成之后,就可以使用它进行搜索了。它最常用的方式是search(),使用search方法将返回一个结果集对象,即Hits。 2、封装搜索...阅读全文
posted @ 2014-03-28 13:41 逆心 阅读(417) | 评论 (0) 编辑
摘要: 一、理解创建索引的过程 创建索引的过程与写一本书差不多。 创建索引的过程如下:建立索引器IndexWriter,这相当于一本书的框架。建立文档对象Document,这相当于一篇文章。(对应数据库就是一张表)建立信息字段对象,这相当于一篇文章中的标题,正文等。(对应数据库就是一个字段)将Field添加到Document里面。将Document添加到IndexWriter里面。关闭索引器IndexWriter。 在创建索引的时候,有三个基本步骤:创建Field。将Field组织到一个Document里面,这样就完成了对一篇文章的包装。将多个Document组织到一个IndexWriter里面...阅读全文
posted @ 2014-03-26 17:31 逆心 阅读(359) | 评论 (0) 编辑
摘要: Lucene.net是java平台搜索插件Lucene的移植版。它的主要用于开发搜索引擎,站内搜索等。 开篇之前,写个最简单的DEMO,让自己先体验下Lucene.net的魅力,顺便搭建环境。 static void Main(string[] args) { //写入数据到索引 Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30); Directory directory = new RAMDir...阅读全文

框架:Lucene.net的更多相关文章

  1. java框架---->lucene的使用(一)

    Lucene是一个全文检索的框架,apache组织提供了一个用Java实现的全文搜索引擎的开源项目.这里我们对apache的lucene的框架做一个简单的介绍.心甘情愿这四个字,透着一股卑微,但也有藏 ...

  2. 全文检索框架---Lucene

    一.什么是全文检索 1.数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据.   结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等.   非结构化数据:指不定长或无固定格式 ...

  3. OSCHina技术导向:Java全文搜索框架Lucene

    Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Lucene的目的是为软件开发人员提供一个简单易用 ...

  4. 9个基于Java的搜索引擎框架

    在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...

  5. 学习笔记之Lucene

    http://baike.baidu.com/view/371811.htm?fr=aladdin Apache Lucene(http://lucene.apache.org/) Java 全文搜索 ...

  6. Java入门到精通——框架篇之Hadoop概述

    一.Hadoop来历 Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明了倒排索引算法,通过加入了Map ...

  7. [转]9个基于Java的搜索引擎框架

    9个基于Java的搜索引擎框架 在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的 ...

  8. Lucene搜索引擎入门

    一.什么是全文检索?            就是在检索数据,数据的分类:                在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档等等......       ...

  9. ElasticSearch

    ElaticSearch简介: ES是一个搜索引擎,基于当前最先进,最高效的全功能开源搜索引擎框架lucene ES还有许多功能: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索 近实时 ...

  10. Nutch插件系统

    Nutch 基本情况 Nutch 是 Apache 基金会的一个开源项目,它原本是开源文件索引框架 Lucene 项目的一个子项目,后来渐渐发展成长为一个独立的开源项目.它基于 Java 开发,基于 ...

随机推荐

  1. Python3基础 response.getcode 得到http的状态 200表示正常

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. Python3基础 while 阶乘

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. Python3基础 getatime getctime getmtime 文件的最近访问 + 属性修改 + 内容修改时间

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. hdu 3874(树状数组)题解

    Problem Description Mery has a beautiful necklace. The necklace is made up of N magic balls. Each ba ...

  5. OpenFlow protocol version 1.0 通信过程

    参考 李呈:[原创]OpenFlow通信流程解读 OpenFlow protocol version 1.0 通信过程 通信双方: OpenFlow控制器,OpenFlow交换机. 通信模块: Sec ...

  6. css未知宽高的盒子div居中的多种方法

    不知道盒子大小.宽高时,如何让盒子上下左右居中? 应用场景:比如上传图片时,并不知道图片的大小,但要求图片显示在某盒子的正中央. 方法1:让4周的拉力均匀-常用 <!-- Author: Xia ...

  7. Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度

    一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问 ...

  8. UVa 11300 分金币

    https://vjudge.net/problem/UVA-11300 题意: 圆桌上有n个人,每个人都有一定的初始金币,每个人可以给他旁边的人一些金币,最终使每个人的金币数相等.计算最少需要转手的 ...

  9. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) D. The Door Problem 2-SAT

    题目链接:http://codeforces.com/contest/776/problem/D D. The Door Problem time limit per test 2 seconds m ...

  10. zookeeper篇-如何修改源码

    提一个问题先 zxid有64位,分成两部分: 高32位是Leader的epoch:选举时钟,每次选出新的Leader,epoch累加1 低32位是在这轮epoch内的事务id:对于用户的每一次更新操作 ...