欢迎来到天天文库
浏览记录
ID:60849637
大小:34.00 KB
页数:4页
时间:2020-12-23
《Lucene拾零学习资料.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、…………………………………………………………最新精品资料推荐……………………………………………………一、建立索引·IndexWriter——Lucene内部用来创建索引的最重要的组件。可以创建新索引,或者从文档增量地创建索引。·Directory——Directory是一个抽象类,用于表达索引存放的目录,在lucene内部提供了两个实现,一个是FSDirectory,一个是RAMDirectory,顾名思义了。Directory可能在内部提供了锁的机制,使得建立索引和搜索可以同时进行。·Analyzer——又是一个抽象类,是In
2、dexWriter的构成组件之一,主要用来分析文本,包括分词,去除stopwords等等功能。在构建一个项目的时候,选取或者创建正确的分析器是至关重要的。·Document——是Lucene处理的对象,一个Document是一组Field的集合·Field——Lucene建立的索引中,每个Document都包含一个或者多个命名的域,被包装在Field类中,Field有多种的类型,Keyword,UnIndexed,Unstored,Text二、搜索过程·IndexSearcher——这个对象主要用来检索IndexWriter生成
3、的索引文件,所以IndexSearcher构造的时候,使用一个包含了索引所在目录的Directory对象来构造。IndexSearcher提供的是一种对索引文件的只读访问,里面提供了多种搜索方法。在我第一次的笔记里代码中用到的search方法,接受一个Query对象和一个HitCollector对象,返回值为空。搜索结果被填充到HitCollector中。·Term——该对象是一个和Field相似的对象,包含一个名字和值对。但是目前,在代码里还没有遇到过这个对象,虽然书里提到在建立索引和搜索的过程中都会用到这个东西,但是实际上,
4、我并没有看到。·Query——Query类是一个抽象类,在Lucene的内部有许多的实现,虽然说,书中也提到了最基本的Query是TermQuery,但是看了看内部的代码,在笔记1中提到的代码内部,实际上用到是BooleanQuery,而不是TermQuery。·TermQuery——最基本的Query,上面也提到了,用来匹配文档中包含的特定的域的特定的值,暂时也没有碰到过。·Hits——这个对象本来应该是一个简单的容器,用来包含搜索得到的排序结果的,但是实际上,在笔记1中的代码里,已经看不到这个东西了,Lucene已经不推荐使
5、用这个东西,现在用到的东西是HitCollector似乎是一个更高级的容器了,在代码中我们看到,我们从这个对象中去除了一个Document的数组,包含的元素正是搜索结果。·QueryParser——这个对象在书中没有提到,实际上,我觉得必须要有的,本质上就是把一个字符串转换成一个Query对象,实际上,这个东西应该是设计得非常的复杂的,因为搜索引擎一般都提供了很丰富的搜索语法,Lucene也是一样的。构造QueryParser的时候,还可以指定专门的Analyzer。…………………………………………………………最新精品资料推荐…
6、…………………………………………………4…………………………………………………………最新精品资料推荐……………………………………………………三、建立索引主要步骤1、提取文本Lucene只能对纯文本建立索引,所以,任何需要建立索引的资料,都要进行过滤处理,从中提取到纯文本。比如对于Word和PDF,我们都要使用相关API将其中的纯文本提取出来,而对于XML和HTML,则意味着要过滤掉所有的tag。2、文本分析(分词器)要建立索引,首先要将文本分解成一个个片段,一般就是单词,当然也可能是词组,句子等。分割好的东西,可能还要进行归一化
7、处理,以确保最大程度上的检索能力,比如,全部变成小写字母,以后搜索的时候,就能忽略大小写。这个过程对于字母文字,有个步骤,就是回归原型,像英文、德文、法文这些我稍微有点了解的语言里,一般都有“数”,“格”,“态”的变化,而同一个词的变化形式,应该被视为是一个词,而不是不同的词。对于汉语这样的没有变形的语言,这方面就非常方便了,但是汉语却有着另一个不方便的地方,就是汉语的最小单位不是字,而是词。也即汉语需要进行分词处理。英文单词使用空格分隔,分词要简单得多得多。除却这些步骤,还有一个共同的步骤就是删除stopwords,简单说就是
8、无意义词,一般来说就是数词,量词,助词,介词,代词等等虚词。3、持久化(将索引写入磁盘)Lucene将分析好的文本使用一种叫做倒排索引的数据结构写入到磁盘中。倒排索引(invertedindex)的建立,完全是为了搜索的方便。如果说,“正排索引”可以回答你一个问
此文档下载收益归作者所有