Lucene.net提供了很全面的数据搜索操作,你可以利用Lucene.net检索磁盘中的文件,网页,数据库中的数据,但是前提是预先对数据创建索引。
Lucene索引过程分为三个主要的操作阶段:将数据转换成文本、分析文本、并将分析过的文本保存到索引库中。如图所示:
1.数据转成文本:须将数据转换成Lucene能够处理的格式——纯文本字符流。
2.分析文本:完成了针对待索引数据的预处理操作,并创建了带有若干个域的Document对象,就可以调用IndexWriter的addDocument(Document)方法,将数据传递给Lucene来进行索引操作。在对 [阅读全文] [PDF]
在说索引的前先说说索引是什么?为什么要索引?如何索引?
先想想看假如现在有个文本我们会如何去搜索比如有个 = "abcdefghijklmnopqrstuvwxyz"这都是26个字母现在要看看里面是不是有a用IndexOf就可以很方便实现现在数据量大了在数据库里已经有100多条数据了当然利用数据库提供操作思路方法也可以很方便查找而这里先抛开数据库把这100多条记录放到N个文本文件中现在要在里面搜索含有“Lucene”这个词记录那如何办呢?如果只简单地使用逐个文件逐字扫描话那和用Windows内置搜索搜索张 [阅读全文] [PDF]
2、索引中用到核心类
在Lucene.Net索引开发中用到类不多这些类是索引过程核心类其中Analyzer是索引建立基础Directory是索引建立中或者建立好存储介质Document和Field类是逻辑结构核心IndexWriter是操作核心其他类使用都被隐藏掉了这也是为什么Lucene.Net使用这么方便原因
2.1 Analyzer
前面已经对Analyzer进行了很详细讲解Analyzer将会把段文本分析称个个Token这些Token如何被IndexWriter使用这里牵涉到个很重要类那就是DocumentsWriter这个类非 [阅读全文] [PDF]
3、Field配置所产生效果
索引数据简单代码只要两个思路方法就搞定了而在索引过程中用到些类里最简单作用也不小就是Field接下来看看Field各项设置都会有什么样效果
代码 3.1
Code
1/**//// <summary>
2/// 索引数据
3/// </summary>
4private void Index
5{
6 Analyzer analyzer = StandardAnalyzer;
7 IndexWriter writer = IndexWriter("IndexDir [阅读全文] [PDF]
4、索引对搜索排序影响
搜索时候同个搜索关键字和同份索引决定了个结果不但决定了结果集合也确定了结果顺序那个这个结果是如何得出来?这个顺序又是如何排呢?这两个问题不是本节讨论重点但是这两个问题却关系到本节要讨论索引对结果影响问题在不使用字段排序情况下Lucene.Net默认是按文档得分来排序这个公式看着很复杂感觉像是大学时高数书上那些个公式其实说清楚了也简单
有关文档排序有几个要素:
(1)、查询词在文档中出现频率就是个文档中包含了几个查询词然后再开个平方这个很好理解;
(2)、反转文档频率这个复杂点影响它有两个原因个是包含查询词文 [阅读全文] [PDF]
话接上篇继续来说权重对排序影响从上面4个测试只能说是有个直观理解了“哦是!调整权重是能影响排序了但是好像没办法来分析到底如何调啊!”似乎是这样现在需要把问题放大加大索引内容到博客园新闻区用zzk找了4篇内容包含“测试”文章代码变成 2.1.5
代码2.1.5
1using ;
2using .Collections.Generic;
3using Lucene.Net.Analysis;
4using Lucene.Net.Analysis.Standard;
5using Lucene [阅读全文] [PDF]
2.2 FieldBoost
如果说DocumentBoost是条线那么FieldBoost则是个点如何理解这个点呢?设置DocumentBoost会影响所有字段在搜索过程中般至少会搜索两个Field比如同时搜索标题和内容而DocumentBoost将同时影响标题和内容搜索得分但是设置FieldBoost则不会有那么大影响FieldBoost只会影响个点那这个点有什么用呢?
现在来做个假设假设现在有条记录是有关Lucene这篇文章讲得很好我想要让别人搜索Lucene这个关键字时候这条记录定排在前10如何办?设置DocuementBoost?设 [阅读全文] [PDF]
5、IndexWriter
索引这部分最后讲是IndexWriter如果说前面提到都是数据结构那么IndexWriter就是业务封装无论述DocumentField还是看不见Segment,Term都是对数据存储逻辑抽象IndexWriter包装了操作过程
当然这里不会讨论IndexWriter每个细节这里主要介绍IndexWriter常使用方法和实际使用中遇到部署问题
5.1 IndexWriter常用思路方法
IndexWriter使用方法很简单前文有例子在接触Lucene.Net 文中代码2.1.1就是最简单使用方法可以看到 [阅读全文] [PDF]
package src;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.document.Document;
im [阅读全文] [PDF]
Lucene是个高性能java全文检索工具包它使用是倒排文件索引结构该结构及相应生成算法如下:
0)设有两篇文章1和2
文章1内容为:Tom lives in Guangzhou,I live in Guangzhou too.
文章2内容为:He once lived in Shanghai.
1)由于lucene是基于关键词索引和查询首先我们要取得这两篇文章关键词通常我们需要如下处理措施
a.我们现在有是文章内容即个串我们先要找出串中所有单词即分词英文单词由于用空格分隔比较好处理中文单词间是连在起需要特殊分词处理
[阅读全文] [PDF]
Lucene 是个基于 Java 全文检索工具包你可以利用它来为你应用加入索引和检索功能Lucene 目前是著名 Apache Jakarta 家族中个开源项目下面我们即将学习 Lucene 索引机制以及它索引文件结构
在这篇文章中我们首先演示如何使用 Lucene 来索引文档接着讨论如何提高索引性能最后我们来分析 Lucene 索引文件结构需要记住是Lucene 不是个完整应用而是个信息检索包它方便你为你应用添加索引和搜索功能
架构概览
图显示了 Lucene 索引机制架构Lucene 使用各种解析器对各种区别类型文档进行解析比如对于 [阅读全文] [PDF]
利用 Lucene在创建索引工程中你可以充分利用机器硬件资源来提高索引效率当你需要索引大量文件时你会注意到索引过程瓶颈是在往磁盘上写索引文件过程中为了解决这个问题, Lucene 在内存中持有块缓冲区但我们如何控制 Lucene 缓冲区呢?幸运是Lucene 类 IndexWriter 提供了 3个参数用来调整缓冲区大小以及往磁盘上写索引文件频率
1.合并因子(mergeFactor)
这个参数决定了在 Lucene 个索引块中可以存放多少文档以及把磁盘上索引块合并成个大索引块频率比如如果合并因子值是 10那么当内存中文档数达到 10 时候 [阅读全文] [PDF]
建立索引
索引建立Lucene 提供了 5个基础类分别是 Document, Field, IndexWriter, Analyzer, Directory以下是他们用途:
Document
Document 字面意思是文档这里文档可以是个 HTML,封电子邮件文本文件doc文档.......个 Document 对象由多个 Field 组成可以把个 Document 对象想象成数据库中个记录而每个 Field 对象就是记录个字段
Field
Field 对象是用来描述个文档某个属性比如封电子邮件标题和内容可以用两个 Fie [阅读全文] [PDF]
//上个例子中没有递归,这次加上,于是目录子目录也可以被索引了.所用到是个思路方法: IndexDirectory.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package yqr.search;
import com.leezjs.ChineseSegmenter.ChineseSegmenter;
import java.io.BufferedReader;
import java.io.File [阅读全文] [PDF]
1.写段传统JDBC讲每条用户信息从数据库读取出来
2.针对每条用户记录建立个lucene document
Document doc = Document;
并根据你需要将用户信息各个字段对应luncene document中field 进行添加如:
doc.add( Field("NAME","USERNAME",Field.Store.YES,Field.Index.UN_TOKENIZED));
然后将该条doc加入到索引中 如: luceneWriter.addDocume [阅读全文] [PDF]
用 lucene 建立索引不可能每次都重新开始建立,而是按照新增加记录,次次递增
建立索引IndexWriter类,有 3个参数
" _disibledevent= IndexWriter(Directory, StandardAnalyzer,isEmpty);
[阅读全文] [PDF]
import java.io.StringReader;
import java.util.Date;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hit [阅读全文] [PDF]
、 Lucene源码实现分析介绍说明
通过以上对Lucene系统结构分析我们已经大致清楚了Lucene系统组成以及在Lucene系统的上开发步骤接下来我们试图来分析Lucene项目(采用Lucene 1.2版本)源码实现考察其实现细节这不仅仅是我们尝试用C语言重新实现Lucene必须工作也是进步做Lucene开发工作必要准备因此这部分所涉及到内容对于Lucene上应用开发也是有价值尤其是本部分所做文件格式分析
由于本文建立在我们毕设项目的上且同时我们需要实现cLucene项目因此很遗憾我们并没有完全完成Lucene所有源码实现分析 [阅读全文] [PDF]
、 绪论
这个部分我们将分析Lucene中索引构建逻辑模块它和前面介绍存储抽象起构成了Lucene索引核心部分无论是对外接口中查询还是分析各种文本以进步生成索引都需要直接这部分来获得对索引文件访问能力因此这部分在系统中至关重要构建个高效、易使用索引构建逻辑即是Lucene在这部分需要达到目
从面向对象经典研究方式出发来看我们只需要使用继承体系来表达图3.1中各个概念就可以通过这个继承体系来控制索引文件结构然后设计合适永久化思路方法以及接受分析token流操作即可将索引构建逻辑完成原理上就是这样简单由于两个关键概念document和 [阅读全文] [PDF]
1 共19条 分1页
- +_@开青岛发票13434444051程生
- 一个简单的 2层系统分析全程
- 主题和皮肤系列(3)
- 主题和皮肤系列(1)
- 主题和皮肤系列(2)
- 鼠标移上去显示层:鼠标滑过显示隐藏层(转)
- jspajax自动刷新:jsp+ajax自动刷新例子(转)
- form表单验证:用js将form表单同时提交到两个区别页面的思路方法
- php上传代码:php统计代码总行数
- 最佳网页宽度及其实现
- 联想2155:PKU 2155
- micboost什么意思:Boost 概述
- atmega16ucosii:μC/OS-II实时性能测试和分析
- cssimportant:4 种实时操作系统实时性的分析对比 --转 time too important
- 基于OHCI的USB主机 —— 总体构架
- 虚拟主机usb:基于OHCI的USB主机 —— 背景介绍
- vc用法:VC使用方法汇总
- 张孝祥《Java就业培训教程》源代码 02 部分
- 抽象类和接口:详细解析Java中抽象类和接口的区别
- 跟踪技术:JSP中的会话跟踪技术