来源: http://zlei.iteye.com/blog/224527
Directory
Directory这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,
它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。
第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。
Document
Document文档类似数据库中的一条记录,可以由好几个字段(Field)组成,并且字段可以套用不同的类型
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。
一个 Document 对象由多个 Field 对象组成的。
可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。
IndexWriter
IndexWriter 是 Lucene 用来创建索引的一个核心的类,
他的作用是把一个个的 Document 对象加到索引中来。
例如:IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(), false);
第一个参数是要索引建立在哪个目录里
第二个参数是新建一个文本分析器,这里用的是标准的大家也可以自己写一个
第三个参数如果是true,在建立索引之前先将目录清空。
Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理,
这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。
针对不同的语言和应用需要选择适合的 Analyzer。
Analyzer 把分词后的内容交给 IndexWriter 来建立索引
IndexSearcher
IndexSearcher是用来在建立好的索引上进行搜索的。
它只能以只读的方式打开一个索引,所以可以有多个IndexSearcher的实例在一个索引上进行操作。
Term是搜索的基本单位,一个Term对象有两个String类型的域组成。
生成一个Term对象可以有如下一条语句来完成:
Term term = new Term(“fieldName”,”queryWord”);
其中第一个参数代表了要在文档的哪一个Field上进行查找,第二个参数代表了要查询的关键词。
Term term = new Term(fieldNames[i], keyWord);
FuzzyQuery用来搜索相似的term
FuzzyQuery fQuery = new FuzzyQuery(term);
Query这是一个抽象类,他有多个实现,
比如TermQuery, BooleanQuery, PrefixQuery.
这个类的目的是把用户输入的查询字符串封装成Lucene能够识别的Query。
如果想输入关键字而不想关心是在哪个Field里的就可以用MultiFieldQueryParser了。
Query keyQuery = MultiFieldQueryParser.parse(keyWord, fieldNames,
conditions, new StandardAnalyzer());
BooleanClause.Occur[]的三种类型:
MUST : + and
MUST_NOT : - not
SHOULD : or
Hits是用来保存搜索的结果的
分享到:
相关推荐
以下是对Lucene常用功能的详细介绍: 1. **创建索引** 创建索引是Lucene工作的第一步。通过`Directory`接口,如`FSDirectory`,Lucene可以读写文件系统中的索引。`IndexWriter`类负责实际的索引构建过程,它允许...
**Lucene常用Demo详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了文本分析、索引构建、搜索功能的核心工具,是Java开发者在项目中实现全文检索的重要利器。本篇文章将深入探讨...
Lucene常用代码详解 Lucene是一款功能强大且高效的搜索引擎,广泛应用于各种搜索应用程序中。为了更好地使用Lucene,需要了解其核心API和常用代码。本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多...
lucene7.3的一些常用jar包 Setting your CLASSPATH First, you should download the latest Lucene distribution and then extract it to a working directory. You need four JARs: the Lucene JAR, the ...
在这个"Lucene 4.7 常用jar集合"中,包含了Lucene 4.7版本的一些核心组件,旨在提供一个精简的、适用于常见用途的库。 首先,我们来看一下这个集合中的关键组件: 1. **lucene-core-4.7.0.jar**:这是 Lucene 的...
lucene4.0常用jar包,里面有lucene-analyzers-common-4.0.0.jar,lucene-core-4.0.0.jar,lucene-highlighter-4.0.0.jar,lucene-queryparser-4.0.0.jar
下面我们将深入探讨与标题和描述相关的几个关键Lucene类,以及如何进行建索引和查询操作。 1. **Analyzer**: 分析器是Lucene的核心组件之一,负责将输入文本拆分成一系列可搜索的术语(tokens)。例如,`...
工具类对IndexWriter,IndexReader,IndexSearcher,Analyzer,QueryParser等Lucene这些常用操作对象的获取进行了封装,其中IndexWriter采用了单例模式,确保始终只有一个对象实例,因为Lucene限制了索引写操作是阻塞的...
在Lucene.NET中,高亮显示搜索结果是一项常用功能,它可以帮助用户快速定位搜索关键词。高亮通常通过Highlighter类实现,以下是一般流程: 1. **创建Highlighter实例**:`var highlighter = new ...
5. **搜索过程**:`Searcher`类负责执行搜索操作,其中`IndexSearcher`是最常用的。它接收一个查询对象,返回匹配的文档集。`TopDocs`类封装了搜索结果,包括得分最高的文档列表和总匹配数。 6. **评分与排序**:...
在`lucene-1.4-final`这个压缩包中,包含了Lucene 1.4版本的源代码,你可以深入研究其内部实现,理解各个类和方法的工作原理。同时,这也可以帮助你定制分析器、优化搜索性能,或者扩展Lucene的功能,例如集成到你的...
2. SSH常用命令: - ssh:用于连接远程主机。 - scp/sftp:用于安全地传输文件。 - ssh-keygen:生成公钥和私钥对。 - ssh-copy-id:将公钥复制到远程主机,简化登录过程。 3. Lucene核心概念: - 分词:...
源代码包含了所有类、接口、方法和注释,是学习Lucene内部机制的关键。 4. **关键类和接口**: - `IndexWriter`: 负责创建和更新索引。 - `Analyzer`: 定义了文本分析的规则,如分词器的选择和词形还原等。 - `...
分词将输入文本拆分成有意义的单元,词干提取减少词汇形式的变化,停用词处理则去除无意义的常用词以降低索引大小。 其次,查询处理是Lucene的另一个关键领域。查询解析器(Query Parser)将用户输入的查询字符串...
这个压缩包“LuceneTest2”很可能是作者自己编写的一系列关于 Lucene 的代码示例,包含了对 Lucene 常用操作的实践和注解。 1. **Lucene 的基本概念** - **索引**:Lucene 首先将文档内容转化为倒排索引结构,便于...
- **工具与扩展**:介绍一些常用的Lucene工具和扩展组件,如Solr、Elasticsearch等。 - **端口移植**:探讨Lucene在不同平台和语言环境下的应用案例。 - **案例研究**:通过具体的案例分析,展示Lucene在实际项目中...
`QueryParser`类是主要的入口点,它可以将简单的自然语言查询(如"北京天气")转化为Lucene可以理解的`Query`对象。同时,这个包还包含了一些查询构造函数,如`BooleanQuery`、`TermQuery`等,使得开发者能够构建...
- **文档构建**:使用`Document`类表示待索引的文档,通过`Field`添加字段信息,指定字段是否存储、是否参与索引等属性。 - **写入索引**:利用`IndexWriter`进行索引的写入操作,可控制索引的最大长度,调用`...
3. **内存缓存**: 对常用查询结果进行缓存,避免重复计算,提升响应速度。 4. **位图过滤**: 对于某些场景,如布尔查询,位图过滤器可以快速排除不匹配的文档,减少搜索范围。 5. **近似搜索**: 使用模糊匹配或n-...