lucene搜索实现过程详解

lucene搜索实现过程详解

ID:20277833

大小:84.00 KB

页数:12页

时间:2018-10-10

lucene搜索实现过程详解_第1页
lucene搜索实现过程详解_第2页
lucene搜索实现过程详解_第3页
lucene搜索实现过程详解_第4页
lucene搜索实现过程详解_第5页
资源描述:

《lucene搜索实现过程详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、lucene搜索实现过程详解郭玉璞2008-05-05一.文档说明1.关于lucene索引生成过程和生成文件结构,在《关于lucene建立索引的详细过程及相关文件结构》一文中已经说明,本文涉及到的文件结构,请参考该文档,这里不再累赘,并且我们假设您已经对索引文件格式有了一定的了解。2.为了对搜索的实现过程有一个清晰的认识,本文采用分级的形势,层层深入。3.对于分词这一块,将有专题讲解,本文在不影响理解的情况下,没有详解。二.搜索过程简介索引的过程主要分为以下几个步骤:1.打开索引文件,并将索引文件的相关信息读入。代码如下:IndexR

2、eaderreader=IndexReader.Open("index");其中,index为索引文件所在的文件夹名称。该句执行完以后,索引文件的相关信息将存放在reader中。2.实例化IndexSearcher,以便于后面的搜索操作。代码如下:IndexSearchersearcher=newIndexSearcher(reader);该句执行完后,索引文件信息将存放在searcher中,后面的的搜索将运用searcher,而不是运用reader。当然,初始化方式有很多种,这里就以代码所示为例。3.声明查询分析器QueryPase

3、r。代码如下:QueryParserparser=newQueryParser(field,analyzer);其中,field为要查询的字段,analyzer为所选择的分析器。4.设置Query间的逻辑关系。代码如下:parser.SetDefaultOperator(QueryParser.Operator.AND);该句的功能是,如果用户以空格隔开两个字符串,设置这两个字符串之间的关系,代码所示的是与的关系,根据需要也可以设置成OR等关系。此句可有可无,Lucene默认的是OR的关系。5.生成Query子对象。代码如下:Quer

4、yquery=parser.Parse(strQuery);其中,strQuery为用户输入的待查询的字符串。该句的主要功能是将用户输入的字符串进行分词,并记录每个Token之间的位置关系,以便于后面的查询。当然,Lucene允许用户直接创建Query,也允许用户采用多种方法构建Query。例如:按词条搜索—TermQuery、“与或”搜索—BooleanQuery、在某一范围内搜索—RangeQuery、使用前缀搜索—PrefixQuery、多关键字的搜索—PhraseQuery、使用短语缀搜索—PhrasePrefixQuery、

5、相近词语的搜索—FuzzyQuery、使用通配符搜索—WildcardQuery。各种方法原理相同,都是将各单个Query搜索,然后再将各自结果按照“与”或者“或”的关系得出最终结果。在本文中,我们将以代码所示的简单方式为例。1.搜索,返回处理结果。代码如下:Hitshits=searcher.Search(query);在该句中,不仅涉及搜索的过程,而且还有排序、过滤等过程。7.根据搜索生成的内部编号,返回真正的结果。代码如下:Documentdoc=hits.Doc(i);一.搜索过程详解。1.IndexReaderreader=

6、IndexReader.Open("index");该句调用IndexReader的Open方法:publicstaticIndexReaderOpen(System.Stringpath){returnOpen(FSDirectory.GetDirectory(path,false),true);}1.1FSDirectory.GetDirectory(path,false),该方法获取索引文件夹的完全路径和创建临时文件路径。其中,path为索引文件所在文件夹的名称,false表示不要创建新的文件夹。该方法调用FSDirectory

7、的GetDirectory方法:publicstaticFSDirectoryGetDirectory(System.Stringpath,boolcreate){returnGetDirectory(newSystem.IO.FileInfo(path),create);}1.1.1GetDirectory(newSystem.IO.FileInfo(path),create);该方法是获取文夹完整路径的核心方法,其他方法都调用此方法。首先,通过语句file=newSystem.IO.FileInfo(file.FullName);

8、获得索引文件所在文件夹的完整路径到file。其次,根据file创建临时文件将要存放的路径:FSDirectorydir;dir=(FSDirectory)DIRECTORIES[file];dir=(FSDirector

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。