﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-昊天-随笔分类-lucence</title><link>http://www.blogjava.net/hao446tian/category/48669.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 08 Jan 2013 19:13:14 GMT</lastBuildDate><pubDate>Tue, 08 Jan 2013 19:13:14 GMT</pubDate><ttl>60</ttl><item><title>Lucene 的学习</title><link>http://www.blogjava.net/hao446tian/archive/2012/02/09/369673.html</link><dc:creator>昊天</dc:creator><author>昊天</author><pubDate>Thu, 09 Feb 2012 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/hao446tian/archive/2012/02/09/369673.html</guid><wfw:comment>http://www.blogjava.net/hao446tian/comments/369673.html</wfw:comment><comments>http://www.blogjava.net/hao446tian/archive/2012/02/09/369673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao446tian/comments/commentRss/369673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao446tian/services/trackbacks/369673.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;通过这几天的看书和学习，对Lucene有了更进一步的认识，所以总结一下这些天的学习成果把Lucene的学习心得也学出来。 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lucene的认识提到Lucene很多人都知道这个开源的搜索工具，其魅力也是很大的。它让我们对搜索引擎的认识不在那么神秘，也不会在觉得百度和goo...&nbsp;&nbsp;<a href='http://www.blogjava.net/hao446tian/archive/2012/02/09/369673.html'>阅读全文</a><img src ="http://www.blogjava.net/hao446tian/aggbug/369673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao446tian/" target="_blank">昊天</a> 2012-02-09 14:51 <a href="http://www.blogjava.net/hao446tian/archive/2012/02/09/369673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene 2 教程 </title><link>http://www.blogjava.net/hao446tian/archive/2012/02/09/369672.html</link><dc:creator>昊天</dc:creator><author>昊天</author><pubDate>Thu, 09 Feb 2012 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/hao446tian/archive/2012/02/09/369672.html</guid><wfw:comment>http://www.blogjava.net/hao446tian/comments/369672.html</wfw:comment><comments>http://www.blogjava.net/hao446tian/archive/2012/02/09/369672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao446tian/comments/commentRss/369672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao446tian/services/trackbacks/369672.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。 其功能非常的强大，api也很简单。总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像)，Document可以看作是 数据库的一行记录，Field可以看作是数据库的字段。用lucene实 现搜索引擎就像用JDBC实现连接数据库一样简单。 Lucene2.0，它与以前广泛应用和介绍的Lucene 1.4...&nbsp;&nbsp;<a href='http://www.blogjava.net/hao446tian/archive/2012/02/09/369672.html'>阅读全文</a><img src ="http://www.blogjava.net/hao446tian/aggbug/369672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao446tian/" target="_blank">昊天</a> 2012-02-09 14:38 <a href="http://www.blogjava.net/hao446tian/archive/2012/02/09/369672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lucence简介</title><link>http://www.blogjava.net/hao446tian/archive/2011/05/24/350904.html</link><dc:creator>昊天</dc:creator><author>昊天</author><pubDate>Tue, 24 May 2011 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/hao446tian/archive/2011/05/24/350904.html</guid><wfw:comment>http://www.blogjava.net/hao446tian/comments/350904.html</wfw:comment><comments>http://www.blogjava.net/hao446tian/archive/2011/05/24/350904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao446tian/comments/commentRss/350904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao446tian/services/trackbacks/350904.html</trackback:ping><description><![CDATA[<p>Lucence<span style="font-family: 宋体">是一个很容易上手</span>,<span style="font-family: 宋体">纯</span>java<span style="font-family: 宋体">语言的全文索引检索工具包。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; Lucene</span><span style="font-family: 宋体">的作者是资深的全文索引</span>/<span style="font-family: 宋体">检索专家，最开始发布在他本人的主页上，</span>2001<span style="font-family: 宋体">年</span>10<span style="font-family: 宋体">月贡献给</span>APACHE<span style="font-family: 宋体">，成为</span>APACHE<span style="font-family: 宋体">基金</span>jakarta<span style="font-family: 宋体">的一个子项目。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">目前，</span>lucene<span style="font-family: 宋体">广泛用于全文索引</span>/<span style="font-family: 宋体">检索的项目中。</span>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp; <strong>Lucene </strong></span><strong><span style="font-family: 宋体">原理</span></strong></p>
<p><span style="color: blue">lucene</span><span style="color: blue; font-family: 宋体">的检索算法属于索引检索，即用空间来换取时间，对需要检索的文件、字符流进行全文索引，在检索的时候对索引进行快速的检索，得到检索位置，这个位置记录检索词出现的文件路径或者某个关键词。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在使用数据库的项目中，不使用数据库进行检索的原因主要是：数据库在非精确查询的时候使用查询语言&#8220;</span>like %keyword%<span style="font-family: 宋体">&#8221;，对数据库进行查询是对所有记录遍历，并对字段进行&#8220;</span>%keyword%<span style="font-family: 宋体">&#8221;匹配，在数据库的数据庞大以及某个字段存储的数据量庞大的时候，这种遍历是致命的，它需要对所有的记录进行匹配查询。因此，</span><strong><span style="color: blue">lucene</span></strong><strong><span style="color: blue; font-family: 宋体">主要适用于文档集的全文检索，以及海量数据库的模糊检索，特别是对数据库的</span><span style="color: blue"> xml</span></strong><strong><span style="color: blue; font-family: 宋体">或者大数据的字符类型。</span></strong>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">全文检索的实现机制</span></p>
<p style="text-indent: 21pt"><span style="color: blue">Lucene</span><span style="color: blue; font-family: 宋体">的</span><span style="color: blue">API</span><span style="color: blue; font-family: 宋体">接口设计的比较通用，输入输出结构都很像数据库的表</span><span style="color: blue">==&gt;</span><span style="color: blue; font-family: 宋体">记录</span><span style="color: blue">==&gt;</span><span style="color: blue; font-family: 宋体">字段</span><span style="font-family: 宋体">，所以很多传统的应用的文件、数据库等都可以比较方便的映射到</span>Lucene<span style="font-family: 宋体">的存储结构</span>/<span style="font-family: 宋体">接口中。<span style="color: blue">总体上看：可以先把</span></span><span style="color: blue">Lucene</span><span style="color: blue; font-family: 宋体">当成一个支持全文索引的数据库系统。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">比较一下</span>Lucene<span style="font-family: 宋体">和数据库：</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p align="center"><strong>Lucene</strong></p></td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p align="center"><strong><span style="font-family: 宋体">数据库</span></strong></p></td></tr>
<tr>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p><span style="font-family: 宋体">索引数据源：</span>doc(field1,field2...) doc(field1,field2...)</p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1.5pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: medium none">\ indexer /</p></div>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: medium none">| Lucene Index|</p></div>
<p>/ searcher \</p>
<p><span style="font-family: 宋体">结果输出：</span>Hits(doc(field1,field2) doc(field1...))</p></td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p><span style="font-family: 宋体">索引数据源：</span>record(field1,field2...) record(field1..)</p>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1.5pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: medium none">\ SQL: insert/</p></div>
<div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid">
<p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: medium none">| DB Index |</p></div>
<p>/ SQL: select \</p>
<p><span style="font-family: 宋体">结果输出：</span>results(record(field1,field2..) record(field1...))</p></td></tr>
<tr>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>Document<span style="font-family: 宋体">：一个需要进行索引的&#8220;单元&#8221;</span></p>
<p><span style="font-family: 宋体">一个</span>Document<span style="font-family: 宋体">由多个字段组成</span></p></td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>Record<span style="font-family: 宋体">：记录，包含多个字段</span></p></td></tr>
<tr>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>Field<span style="font-family: 宋体">：字段</span></p></td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>Field<span style="font-family: 宋体">：字段</span></p></td></tr>
<tr>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>Hits<span style="font-family: 宋体">：查询结果集，由匹配的</span>Document<span style="font-family: 宋体">组成</span></p></td>
<td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
<p>RecordSet<span style="font-family: 宋体">：查询结果集，由多个</span>Record<span style="font-family: 宋体">组成</span></p></td></tr></tbody></table>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">全文检索</span> <span style="font-family: 宋体">&#8800;</span> like "%keyword%"</p>
<p>-------------------------------------------------------------------------</p>
<p>Lucene<span style="font-family: 宋体">作为一个全文检索引擎，其具有如下突出的优点：</span> </p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">（</span>1<span style="font-family: 宋体">）索引文件格式独立于应用平台。</span>Lucene<span style="font-family: 宋体">定义了一套以</span>8<span style="font-family: 宋体">位字节为基础的索引文件格式，使得兼容系统或者不同平台的应用能够共享建立的索引文件。</span></p>
<p><span style="font-family: 宋体">（</span>2<span style="font-family: 宋体">）在传统全文检索引擎的倒排索引的基础上，实现了分块索引，能够针对新的文件建立小文件索引，提升索引速度。然后通过与原有索引的合并，达到优化的目的。</span></p>
<p><span style="font-family: 宋体">（</span>3<span style="font-family: 宋体">）优秀的面向对象的系统架构，使得对于</span>Lucene<span style="font-family: 宋体">扩展的学习难度降低，方便扩充新功能。</span></p>
<p><span style="font-family: 宋体">（</span>4<span style="font-family: 宋体">）设计了独立于语言和文件格式的文本分析接口，<span style="color: blue">索引器通过接受</span></span><span style="color: blue">Token</span><span style="color: blue; font-family: 宋体">流完成索引文件的创立，用户扩展新的语言和文件格式，只需要实现文本分析的接口</span><span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">（</span>5<span style="font-family: 宋体">）已经默认实现了一套强大的查询引擎，用户无需自己编写代码即使系统可获得强大的查询能力，</span>Lucene<span style="font-family: 宋体">的查询实现中默认实现了布尔操作、模糊查询（</span>Fuzzy Search[11]<span style="font-family: 宋体">）、分组查询等等。</span></p>
<p>----------------------------------------------------------------------------------&nbsp;</p>
<p>lucence<span style="font-family: 宋体">例子：</span>&nbsp;</p>
<p>Windows<span style="font-family: 宋体">：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; C:\file\1.txt; </span><span style="font-family: 宋体">内容：中华人民共和国，全国人民</span> <span style="font-family: 宋体">，</span>2006<span style="font-family: 宋体">年</span>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp; C:\file\2.txt;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; C:\file\3.txt;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; C:\index</span></p>
<p>step1.<span style="font-family: 宋体">建立索引；</span>step2.<span style="font-family: 宋体">搜索文档</span>&nbsp;</p>
<p><span style="font-family: 宋体">建立索引</span>&nbsp;</p>
<p><span style="font-family: 宋体">为了对文档进行索引，</span>Lucene <span style="font-family: 宋体">提供了五个基础的类，他们分别是</span> Document, Field, IndexWriter, Analyzer, Directory<span style="font-family: 宋体">。下面我们分别介绍一下这五个类的用途：</span>&nbsp;</p>
<p>Document</p>
<p>Document <span style="font-family: 宋体">是用来描述文档的，这里的文档可以指一个</span> HTML <span style="font-family: 宋体">页面，一封电子邮件，或者是一个文本文件。一个</span> Document <span style="font-family: 宋体">对象由多个</span> Field <span style="font-family: 宋体">对象组成的。可以把一个</span> Document <span style="font-family: 宋体">对象想象成数据库中的一个记录，而每个</span> Field <span style="font-family: 宋体">对象就是记录的一个字段。</span>&nbsp;</p>
<p>Field</p>
<p>Field <span style="font-family: 宋体">对象是用来描述一个文档的某个属性的，比如一封电子邮件的标题和内容可以用两个</span> Field <span style="font-family: 宋体">对象分别描述。</span>&nbsp;</p>
<p>Analyzer</p>
<p style="text-indent: 21pt"><span style="color: blue; font-family: 宋体">在一个文档被索引之前，首先需要对文档内容进行分词处理，这部分工作就是由</span><span style="color: blue"> Analyzer </span><span style="color: blue; font-family: 宋体">来做的。</span>Analyzer <span style="font-family: 宋体">类是一个抽象类，它有多个实现。针对不同的语言和应用需要选择适合的</span> Analyzer<span style="font-family: 宋体">。</span><span style="color: blue">Analyzer </span><span style="color: blue; font-family: 宋体">把分词后的内容交给</span><span style="color: blue"> IndexWriter </span><span style="color: blue; font-family: 宋体">来建立索引</span><span style="font-family: 宋体">。</span>&nbsp;</p>
<p>IndexWriter</p>
<p>IndexWriter <span style="font-family: 宋体">是</span> Lucene <span style="font-family: 宋体">用来创建索引的一个核心的类，他的作用是把一个个的</span> Document <span style="font-family: 宋体">对象加到索引中来。</span>&nbsp;</p>
<p>Directory</p>
<p><span style="font-family: 宋体">这个类代表了</span> Lucene <span style="font-family: 宋体">的索引的存储的位置，这是一个抽象类，它目前有两个实现，第一个是</span> FSDirectory<span style="font-family: 宋体">，它表示一个存储在文件系统中的索引的位置。第二个是</span> RAMDirectory<span style="font-family: 宋体">，它表示一个存储在内存当中的索引的位置。</span>&nbsp;</p>
<p><strong><span style="font-family: 宋体">搜索文档</span></strong>&nbsp;</p>
<p><span style="font-family: 宋体">利用</span>Lucene<span style="font-family: 宋体">进行搜索就像建立索引一样也是非常方便的。在上面一部分中，我们已经为一个目录下的文本文档建立好了索引，现在我们就要在这个索引上进行搜索以找到包含某个关键词或短语的文档。</span>Lucene<span style="font-family: 宋体">提供了几个基础的类来完成这个过程，它们分别是呢</span>IndexSearcher, Term, Query, TermQuery, Hits. <span style="font-family: 宋体">下面我们分别介绍这几个类的功能。</span>&nbsp;</p>
<p>Query</p>
<p><span style="font-family: 宋体">这是一个抽象类，他有多个实现，比如</span>TermQuery, BooleanQuery, PrefixQuery. <span style="font-family: 宋体">这个类的目的是把用户输入的查询字符串封装成</span>Lucene<span style="font-family: 宋体">能够识别的</span>Query<span style="font-family: 宋体">。<br /></span>Term</p>
<p>Term<span style="font-family: 宋体">是搜索的基本单位，一个</span>Term<span style="font-family: 宋体">对象有两个</span>String<span style="font-family: 宋体">类型的域组成。生成一个</span>Term<span style="font-family: 宋体">对象可以有如下一条语句来完成：</span>Term term = new Term(<span style="font-family: 宋体">&#8220;</span>fieldName<span style="font-family: 宋体">&#8221;</span>,<span style="font-family: 宋体">&#8221;</span>queryWord<span style="font-family: 宋体">&#8221;</span>); <span style="font-family: 宋体">其中第一个参数代表了要在文档的哪一个</span>Field<span style="font-family: 宋体">上进行查找，第二个参数代表了要查询的关键词。</span>&nbsp;</p>
<p>TermQuery</p>
<p>TermQuery<span style="font-family: 宋体">是抽象类</span>Query<span style="font-family: 宋体">的一个子类，它同时也是</span>Lucene<span style="font-family: 宋体">支持的最为基本的一个查询类。生成一个</span>TermQuery<span style="font-family: 宋体">对象由如下语句完成：</span> TermQuery termQuery = new TermQuery(new Term(<span style="font-family: 宋体">&#8220;</span>fieldName<span style="font-family: 宋体">&#8221;</span>,<span style="font-family: 宋体">&#8221;</span>queryWord<span style="font-family: 宋体">&#8221;</span>)); <span style="font-family: 宋体">它的构造函数只接受一个参数，那就是一个</span>Term<span style="font-family: 宋体">对象。</span>&nbsp;</p>
<p>IndexSearcher</p>
<p><span style="color: blue">IndexSearcher</span><span style="color: blue; font-family: 宋体">是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引，所以可以有多个</span><span style="color: blue">IndexSearcher</span><span style="color: blue; font-family: 宋体">的实例在一个索引上进行操作。</span>&nbsp;</p>
<p>Hits</p>
<p>Hits<span style="font-family: 宋体">是用来保存搜索的结果的。</span></p>
<p><span style="font-family: 宋体">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p><strong><span style="font-family: 宋体">总结：</span></strong></p>
<p>Lucene <span style="font-family: 宋体">其实很简单的</span>,<span style="font-family: 宋体">它最主要就是做两件事</span>:<span style="font-family: 宋体">建立索引和进行搜索</span> <br /><span style="font-family: 宋体">来看一些在</span>lucene<span style="font-family: 宋体">中使用的术语</span>,<span style="font-family: 宋体">这里并不打算作详细的介绍</span>,<span style="font-family: 宋体">只是点一下而已</span>----<span style="font-family: 宋体">因为这一个世界有一种好东西，叫搜索。</span> <br /><br /><span style="color: blue">IndexWriter:lucene</span><span style="font-family: 宋体">中最重要的的类之一，它主要是用来</span> <span style="font-family: 宋体">将文档加入索引，同时控制索引过程中的一些参数使用。</span> <br /><br /><span style="color: blue">Analyzer:</span><span style="font-family: 宋体">分析器</span>,<span style="font-family: 宋体">主要用于分析搜索引擎遇到的各种文本。常用的</span> <span style="font-family: 宋体">有</span>StandardAnalyzer<span style="font-family: 宋体">分析器</span>,StopAnalyzer<span style="font-family: 宋体">分析器</span>,WhitespaceAnalyzer<span style="font-family: 宋体">分析器等。</span> <br /><br /><span style="color: blue">Directory:</span><span style="font-family: 宋体">索引存放的位置</span>;lucene<span style="font-family: 宋体">提供了两种索引存放的</span> <span style="font-family: 宋体">位置，一种是磁盘，一种是内存。一般情况将索引放在磁盘上；相应地</span>lucene<span style="font-family: 宋体">提供了</span>FSDirectory<span style="font-family: 宋体">和</span>RAMDirectory<span style="font-family: 宋体">两个类。</span> <br /><br /><span style="color: blue">Document:</span><span style="font-family: 宋体">文档</span>;Document<span style="font-family: 宋体">相当于一个要进行索引的单元，</span> <span style="font-family: 宋体">任何可以想要被索引的文件都必须转化为</span>Document<span style="font-family: 宋体">对象才能进行索引。</span> <br /><br /><span style="color: blue">Field</span><span style="font-family: 宋体">：字段。</span> <br /><br /><span style="color: blue">IndexSearcher:</span><span style="font-family: 宋体">是</span>lucene<span style="font-family: 宋体">中最基本的检索工具，所有的</span> <span style="font-family: 宋体">检索都会用到</span>IndexSearcher<span style="font-family: 宋体">工具</span>; <br /><br /><span style="color: blue">Query:</span><span style="font-family: 宋体">查询，</span>lucene<span style="font-family: 宋体">中支持模糊查询，语义查询，短语查询，组</span> <span style="font-family: 宋体">合查询等等</span>,<span style="font-family: 宋体">如有</span>TermQuery,BooleanQuery,RangeQuery,WildcardQuery<span style="font-family: 宋体">等一些类。</span> <br /><br /><span style="color: blue">QueryParser: </span><span style="font-family: 宋体">是一个解析用户输入的工具，可以通过扫描用户输入的字符串，生成</span>Query<span style="font-family: 宋体">对象。</span> <br /><br /><span style="color: blue">Hits:</span><span style="font-family: 宋体">在搜索完成之后，需要把搜索结果返回并显示给用户，只有这样才</span> <span style="font-family: 宋体">算是完成搜索的目的。在</span>lucene<span style="font-family: 宋体">中，搜索的结果的集合是用</span>Hits<span style="font-family: 宋体">类的实例来表示的。</span></p><img src ="http://www.blogjava.net/hao446tian/aggbug/350904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao446tian/" target="_blank">昊天</a> 2011-05-24 10:58 <a href="http://www.blogjava.net/hao446tian/archive/2011/05/24/350904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>