摘要: 一、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. JS 获取浏览器的宽和高

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  2. linux指定某用户某组挂载外接硬盘以便操作硬盘

    一.环境:发行版本:ubuntu 14.04 64bit 二.获取要指定的用户及组id 使用id命令 (笔者获取的uid和gid都为1000) 三.获取识别的硬盘路径 sudo fdisk -l  ( ...

  3. PHP开发者的路书

    初学者 作为初学者,通常情况下,我们都会买一本PHP教材,或者在网上看免费教程,这当然是学习的好途径.因为,这些书籍和网上的免费教程,基本上都是由浅入深的渐进式教学方式,基础知识居多,高级知识占少量的 ...

  4. vim 操作快捷键 待更~

    shift + g 文件尾 ------ gdb p print start 从main函数开始 n next换行 s step 进入函数

  5. input标签type=button时,如何禁用和开启按钮

    本文为博主原创,未经允许不得转载: <input id="exportCameraButton" type="button" class="bt ...

  6. NS3 一个小问题

    可能会在执行./waf 命令的时候遇到这个问题,比如我想编译 /home/wasdns/Documents/NS3/ns-3.17/scratch 目录下的一个文件:newnsthree.cpp 编译 ...

  7. 学习mybatis-3 step by step 篇二

    Mapper XML 文件 基本的*Mapper.xml文件配置就不熬述了具体可参考: http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html 1.sq ...

  8. c 宏的定义

    #include <stdio.h> #include <conio.h> #define VAL 40 #ifdef VAL #undef VAL #endif #defin ...

  9. html 获取鼠标左键事件,滚轮点击事件,右键点击事件

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. 通过 sqldf 包使用 SQL 查询数据框

    在前面的章节中,我们学习了如何编写 SQL 语句,在关系型数据库(如 SQLite 和MySQL )中查询数据.我们可能会想,有没有一种方法,能够直接使用 SQL 进行数据框查询,就像数据框是关系型数 ...