0 0

关于Lucene的布尔查询?5

关系是这样的 :
(北京|暴雨) (死人|淹死) ^(奥运)

其中,每个括号里的词和词之间是 '或' 的关系,
比如 '北京' 和 '暴雨' 可以用一个布尔查询组织起来,

但是 每个括号 之间 是 '和' 的关系

最后 带有 异或^ 符号的 的括号中的词 是必须不能包含的

索引库中查询的字段有两个 分别是 title和content
我试着用N多 的booleanQuery 按着这个逻辑组合起来,但不是 没结果就是 该去掉的没去掉,求指点啊
2012年8月22日 10:56

1个答案 按时间排序 按投票排序

0 0

	BooleanQuery bq = new BooleanQuery();
		Query q;
		BooleanQuery bjby = new BooleanQuery();
		 q= MultiFieldQueryParser.parse(Version.LUCENE_30, "北京",
				new String[]{"title","content"}, new BooleanClause.Occur[]{
		   BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }, analyzer);
		 bjby.add(q, BooleanClause.Occur.SHOULD);
		 q= MultiFieldQueryParser.parse(Version.LUCENE_30, "暴雨",
					new String[]{"title","content"}, new BooleanClause.Occur[]{
			   BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }, analyzer);
		 bq.add(bjby, BooleanClause.Occur.MUST);
		 BooleanQuery xy = new BooleanQuery();
		 q= MultiFieldQueryParser.parse(Version.LUCENE_30, "私人",
				new String[]{"title","content"}, new BooleanClause.Occur[]{
		   BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }, analyzer);
		 xy.add(q, BooleanClause.Occur.SHOULD);
		 q= MultiFieldQueryParser.parse(Version.LUCENE_30, "淹死",
					new String[]{"title","content"}, new BooleanClause.Occur[]{
			   BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }, analyzer);
		 xy.add(q, BooleanClause.Occur.SHOULD);
		 bq.add(xy, BooleanClause.Occur.MUST);
		 
		 q= MultiFieldQueryParser.parse(Version.LUCENE_30, "奥运",
					new String[]{"title","content"}, new BooleanClause.Occur[]{
			   BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD }, analyzer);
		 bq.add(bjby, BooleanClause.Occur.MUST_NOT);
		 
		 return bq;

2012年8月23日 16:54

相关推荐

    Lucene 搜索方法(布尔搜索)

    **详细的Lucene布尔搜索步骤** 1. **创建索引**: 首先,我们需要使用`IndexWriter`将文档内容和元数据(如标题、作者等)写入Lucene索引。 2. **构造布尔查询**: 使用`BooleanQuery.Builder`创建一个查询实例,...

    lucene的查询语法事例

    - **BOOLEAN运算符**: 可以使用`AND`, `OR`, `NOT`等布尔运算符组合查询,如`+(java OR python) -csharp`表示必须包含"java"或"python",但排除"csharp"。 ### 3. 进阶查询 - **模糊查询 (Fuzzy Query)**:使用`~`...

    Lucene3.0之查询类型详解

    【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...

    Lucene索引和查询

    - 查询分析(Query Parsing):将用户的输入转换为查询语法,可能涉及短语查询、布尔查询等。 - 匹配评分(Scoring):Lucene使用TF-IDF(Term Frequency-Inverse Document Frequency)或其他评分算法,计算每个文档...

    lucene实现索引查询

    以下是关于使用Lucene实现索引查询的详细知识: ### 一、创建索引 创建索引是Lucene的核心过程,它涉及到以下步骤: 1. **定义索引目录**:首先,你需要指定一个目录来存储索引文件。这通常是一个文件夹,可以...

    lucene,lucene教程,lucene讲解

    BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。 有以下6种组合: 1.MUST和MUST:取得连个查询子句的交集。 2.MUST和...

    Lucene+in+action中文版

    Lucene支持多种查询表达式,如布尔查询、短语查询、模糊查询等,还提供了查询优化策略,以提高查询性能。此外,书中还涵盖了查询评分机制,它是决定搜索结果排序的关键因素。 对于Lucene的使用,书中不仅给出了基础...

    Lucene分词与查询详解

    Lucene支持多种查询类型,如布尔查询、短语查询、范围查询等。 5. **评分(Scoring)**:Lucene会根据查询和文档的相关性给出一个分数,决定搜索结果的排序。TF-IDF(Term Frequency-Inverse Document Frequency)...

    lucene in action英文版 lucene 3.30包

    《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。Lucene是一个高性能、全文本搜索库,它允许开发人员在应用程序中轻松实现复杂的搜索功能。这本书主要面向...

    lucene相关jar+查询分析器jar

    5. **查询语法**:Lucene支持布尔运算符(AND, OR, NOT)、短语查询、前缀查询、范围查询等多种查询类型。例如,"title:(+java -script)"表示查询标题中包含"java"但不包含"script"的文档。 6. **性能优化**:...

    lucene 2.0 api以及lucene 3.0 api

    2. **查询构造**: 通过 `QueryParser` 类,用户可以构建复杂的布尔查询。`TermQuery`, `WildcardQuery`, `PrefixQuery` 等是常见的查询类型。 3. **搜索执行**: 使用 `Searcher` 类进行搜索操作,`Hits` 类表示搜索...

    lucene创建修改删除组合条件查询

    以上就是关于“lucene创建修改删除组合条件查询”的主要知识点。通过熟练掌握这些操作,开发者可以构建出强大的全文搜索系统,满足各种复杂的查询需求。在实际应用中,还需要注意性能优化,如合理使用索引,以及根据...

    lucene in action 2nd edition, lucene in action 第二版 PDF

    4. **查询处理**:讲解了如何构建各种查询表达式,如布尔查询、短语查询、范围查询等,并且讨论了评分机制和查询优化技巧。 5. **高级主题**:书中涵盖了高级话题,如近实时搜索、分布式搜索(通过Solr实现)、复杂...

    java实现倒排索引表的布尔查询

    本文将深入探讨如何使用Java实现一个简单的倒排索引表,并结合布尔查询进行文本搜索。 首先,我们需要理解倒排索引的基本概念。倒排索引是从词到文档的映射,即它将每个词关联到包含该词的所有文档的列表。这种索引...

    Lucene资料大全(包括Lucene_in_Action书等)

    Lucene支持布尔查询、短语查询、模糊查询等多种查询类型。 4. **结果排序**:Lucene通过评分机制(如TF-IDF)对搜索结果进行排序,得分最高的结果优先展示。 5. **过滤与聚合**:Filter和Collector组件可以用于...

    Lucene示例 BM25相似度计算

    在Lucene中,查询可以是简单的关键词,也可以是复杂的布尔表达式。查询解析器将用户输入转化为 Lucene 可以理解的Query对象,然后执行查询,返回匹配的文档集合。在本示例中,我们将看到如何使用这些功能并对比不同...

    Lucene3.5源码jar包

    源码中包含了对布尔查询、短语查询等多种查询类型的处理逻辑。 4. **搜索过程**:`Searcher`类实现了搜索功能,包括`IndexSearcher`和`MultiSearcher`,它们分别用于单个索引和多个索引的搜索。搜索过程涉及到了...

    lucene 4.7.2 Demo

    除了基本的关键词查询,Lucene还支持布尔查询、短语查询、模糊查询等。在4.7.2版本中,Lucene引入了通用对象搜索,这意味着你可以根据自定义的对象类型进行搜索,这极大地扩展了Lucene的应用场景。 范围搜索是...

    Lucene全文搜索_LuceneJava全文搜索_

    在搜索阶段,Lucene支持多种查询类型,如标准查询(Standard Query)、短语查询(Phrase Query)、布尔查询(Boolean Query)以及模糊查询。模糊查询允许用户输入近似或部分关键词,系统会尝试找到与之最接近的匹配...

    关于lucene的小常识

    3. **查询解析**:用户输入的查询字符串会被解析为一系列的查询条款,Lucene提供了多种查询类型,如布尔查询、短语查询、范围查询等,以满足不同的搜索需求。 4. **评分与排序**:Lucene使用TF-IDF(词频-逆文档...

Global site tag (gtag.js) - Google Analytics