随笔分类 - SearchEngine
搜索引擎研究
摘要:UtilUtil包含一些数据结构如BitVector 和PriorityQueue,具体的说明如下表所示:类名说明Arrays一个关于数组的排序方法的静态类,提供了优化的基于快排序的排序方法sortBitVectorC/C++语言中位域的C#实现Number一个数字字母的转化类,定义了ToString()以及Parse()方法PriorityQueue一个优先队列的抽象类,用于后面实现各种具体的优...
阅读全文
摘要:StoreStore里主要是一些对文件的操作类。其主要目的是抽象出和平台文件系统无关的存储抽象,提供诸如目录服务(增、删文件)、输入流和输出流。主要的类的结构为:抽象类Directory类,InputStream类和OutputStream类。其中FSDirectory,RAMDirectory继承了Directory抽象类,FSInputStream,RAMInputStream继承了Input...
阅读全文
摘要:IndexØ Term is <fieldName, text>Ø index maps Term → <df, <docNum, <position>* >*>Ø e.g., “content:pisa” → <2, <2, <14>>, &...
阅读全文
摘要:SearchØ primitive queries: TermQuery: match docs containing a TermPhraseQuery: match docs w/ sequence of TermsBooleanQuery: match docs matching other queries.e.g., +path:pisa +content:“Doug...
阅读全文
摘要:QueryParser本模块主要的功能是用来接收查询语句,将其解析成对象以便于搜索BNF范式为:Query ::= ( Clause )*Clause ::= ["+", "-"] [<TERM> ":"] ( <TERM> | "(" Query ")")
阅读全文
摘要:AnalysisAnalysis模块主要提供了文本解析的功能,输入为TextReader的字符流,最终解析成TokenStream形式的结果返回给调用端。由前文的NLucene架构图可以看出,Analysis主要为Index和QueryParser模块提供解析服务,分别是在Indexing原始文件和解析搜索语句中的Term的过程中。要了解这个包,首先需要明确几个概念:Ø Token:...
阅读全文
摘要:Document一个Document由一系列Field组成,每个Field都是一个<Name, Value>对。顾名思义,这个名值对中的Name就是域名,比如:Title, Body, Subject, Date, etc. Value是一个Text文本。 Field值可以被存储(Stored)、索引(Indexed)以及分析(Analyzed)。其中Field包括四种类型: 类型 说...
阅读全文
摘要:Data Flow NLucene内部的数据流图如下所示,共包含了4种数据流格式:分别是文本流、Token流、字节流与查询语句对象流。文本流表示了对于索引目标和交互控制的抽象,即用文本流表示了将要索引的文件,用文本流向用户输出信息;在实际的实现中,NLucene中的文本流采用了UCS-2作为编码,以达到适应多种语言文字的处理的目的。Token流是NLucene内部所使用的概念,是对传统文字中的词的...
阅读全文
摘要:ArchitectureNLucene的Architecture如下图所示:从图中我们清楚的看到,NLucene的系统由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene的将所有源码分为了7个模块,各个模块所属的系统部分也如上图所示。需要说明的是QueryPaser是做为Search的语法解析器存在,不被系统之外实际调用,因此这里没有当作对外接...
阅读全文
摘要:DefinitionLucene是Apache软件基金会Jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索...
阅读全文

浙公网安备 33010602011771号