lucene3.0中BooleanQuery 实现与或的复合搜索 .
BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。必须包含,不能包含,可以包含三种.有以下6种组合:
1.MUST和MUST:取得连个查询子句的交集。
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。
3.SHOULD与MUST_NOT:连用时,功能同MUST和MUST_NOT。
4.SHOULD与MUST连用时,结果为MUST子句的检索结果,但是SHOULD可影响排序。
5.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。
6.MUST_NOT和MUST_NOT:无意义,检索无结果。
private static void search(String str) throws Exception {
IndexReader reader = IndexReader.open(FSDirectory.open(new File(
INDEX_DIR)), true); // only searching,
// so read-only=true
Searcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new IKAnalyzer();
String field = "contents";
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,
analyzer);
Query query = null;
str = getKeyWord(str);
query = parser.parse(str);
BooleanQuery q = new BooleanQuery();
q.add(query, BooleanClause.Occur.MUST);
QueryParser parser2 = new QueryParser(Version.LUCENE_CURRENT, "keyword", analyzer);
Query q2 = parser2.parse(str);
// q2.setBoost(10);
q.add(q2, BooleanClause.Occur.SHOULD);
TopScoreDocCollector collector = TopScoreDocCollector.create(10, false);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
}
分享到:
相关推荐
在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较低。 - **索引查询**:基于预...
通过对《Lucene 3.0 原理与代码分析完整版》的学习,开发者不仅可以理解Lucene的工作原理,还能掌握如何定制化Lucene以满足特定需求,从而在实际项目中充分利用其强大功能。这本书是深入研究和应用Lucene不可或缺的...
本篇将深入探讨Lucene 3.0 API的中文帮助文档,帮助开发者更好地理解和使用这个强大的搜索引擎。 首先,Lucene 3.0 API是Lucene的一个重要版本,它包含了丰富的类和接口,用于索引、查询和管理文本数据。这个版本的...
**Lucene3.0文件搜索概述** Lucene是Apache软件基金会的一个开源全文搜索引擎库,它提供了高级的文本分析和索引功能,使开发者能够轻松地在应用中实现强大的搜索功能。在Lucene 3.0版本中,这个功能得到了进一步...
本篇文章将深入探讨Lucene 3.0的基础实例,帮助读者理解和掌握如何使用这个强大的工具。 一、Lucene简介 Lucene是一个高性能、全文本搜索库,它提供了基本的索引和搜索功能,同时也支持高级查询语法。在Lucene 3.0...
本指南主要关注的是Lucene 3.0版本的API,这是一个强大的工具集,用于在Java环境中构建全文搜索引擎。 一、Lucene核心概念 1. 文档(Document):在Lucene中,文档是信息的基本单位,它由一系列字段(Field)组成...
《Lucene3.0原理与代码分析》是针对搜索引擎库Lucene 3.0版本的一份详尽解析,旨在帮助读者深入理解其内部工作机制和实现细节。Lucene是一款高性能、全文检索库,广泛应用于各类信息检索系统。下面将围绕Lucene的...
2. **分析器(Analyzer)**:Lucene 3.0中,分析器负责处理文本的预处理。例如,可以使用`StandardAnalyzer`来处理英文文本,它会进行分词、去除标点符号和大小写转换。 3. **查询(Query)**:学习如何创建查询...
这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...
Lucene 提供了多种查询对象,如 `TermQuery`、`BooleanQuery`、`PhraseQuery` 等,它们分别对应于不同类型的查询。 #### 十、Lucene 的分词器(Analyzer) 分词器是 Lucene 中的核心组件之一,用于将文本分解成...
### Lucene 3.0 原理与代码分析知识点概览 #### 一、全文检索的基本原理 **全文检索**是一种从文档集合中找出包含指定词汇的技术。它能够处理大量的非结构化文本数据,例如电子邮件、网页内容、文档等,并提供高效...
5. **查询解析与执行**:解释了如何构造查询表达式,使用QueryParser和BooleanQuery等工具,以及查询执行的流程。 6. **结果排序与相关性**:阐述了如何自定义评分函数以实现更精确的排序,以及调整相关性算法来...
在Lucene 3.0版本中,其架构主要分为对外接口、索引核心以及基础结构封装三大部分,共包含八个模块。 1. **Analysis**: - 分析器(Analyzer):处理输入的查询语句和文档内容,如StandardAnalyzer是最常用的,...
所提供的文档资源,如《Lucene学习总结之一》、《传智播客Lucene3.0课程》、《JAVA_Lucene_in_Action教程完整版》以及《Lucene_in_Action(中文版)》,都是深入了解 Lucene 的宝贵资料,建议结合这些材料进行系统...
- 构建`Query`对象,如使用`BooleanQuery`或`TermQuery`。 - 使用`IndexSearcher`的`search()`方法执行查询,返回`TopDocs`对象。 - 遍历`ScoreDoc`,获取匹配文档及其相关性分数。 4. **优化和维护**:Lucene...