Lucene索引和搜索核心类的简单介绍

IndexWirter(写索引):

                       索引过程的核心组件,这个类负责创建新索引和打开已有索引,以及删除,新增活更新已索引的文档。IndexWriter创建索引文件需要空间有Directory完成

Directory:

             描述索引文件存放的位置,它是一个抽象类,由他的的子类来完成具体的索引文件的存储路劲,在前面的Indexer例子中,我们用FSDirectory.open方法来获取索引文件在文件系统中具体的存放路劲,Directory有大量的实现,具体请参考其他资料,IndexWriter不能直接索引文本,这必须先由Analyzer将文本分隔成独立的单词才行

Anaylzer(分析器):

     Analylzer是一个抽象类,lucene提供了几个类实现它,  它负责从文本文件中提取语汇单元,并提出剩下的无用信息,如果被索引的内容不是纯文本文件,需要先转换为文本文档。这个可以是TIKa从常用的多媒体格式文件中提取文件内容。


Document(文档) :

      该对象代表一些域(Field)的集合。我们可以把它看成是一个虚拟文档。他是由我们从文件文件中抽取出来的通过域组成的。如一个html页面。从中抽取出url,href等相关元数据都作为文档的不同域单独存储并被索引。


Filed(域):
     索引文档都包含许多不同名称的域。这些域由Filed类组成。每个域都有对应的一个域名和域值。文档可能不止一个同名的域。在这种情况下,域的值就按照索引操作顺序添加进去。在搜索时,所有域的文本就好像连在一起。作为一个文档域来处理



IndexSearcher:

     Indexsearcher类用于搜索由indexWriter所创建的索引。这个类公开的几个方法,他是连接索引的中心的环节,可以把IndexSearcher类看做一个已只读方式打开索引的类,他需要我们的Directory类来开打我们所创建的索引,然后才能提供大量的方法,其中的一些方法有它的父类Searcher提供。最简单的搜索放是将当个Query对象和Int topN计数作为该方法的参数。并返回一个TopDocs对象,如下。

Directory directory=FSDirectory.open(new File(""));
IndexSearcher searcher=new IndexSearcher(directory);
Query query=new TermQuery(new Term("contenxt","hello"));
TopDocs topDocs=searcher.search(query,10);
searcher.close();


Term:

       Term对象是搜索的最基本单元,与Field类似,Term对象包含一对字符串元素:域名和单词(或域文本值)


Query:

       Lucene有许多Query的子类。这里我只介绍了其中的一种TermQuery,其他的Query子类有:BooleanQuery,PhraseQuery,PrefixQuery,PhrasePrefixQuery,TermRangeQuery,NumericTangeQuery,FilteredQuery和SpanQuery,,TermQuery类,他是lucene中大多数复杂查询的基础

TermQuery:

      TermQuery是他用来匹配指定域中所包含特定向的文档。

TopDocs:

      TopDocs类是一个简单的指针容器。指针一般指向前N个排名的搜索结果,TopDocs会记录前N个结果中每个结果的int docId(可以用他来恢复文档)和浮点分数(排名)。

    
     



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值