`
baobeituping
  • 浏览: 1068137 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene 搜索方法(布尔搜索)

阅读更多

布尔搜索:
布尔查询的对象中,包含一个子句的集合。各种子句间都是“与”、“或”这样的布尔逻辑。

package com.querytype;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;

public class BooleanQueryDemo {

/**
* @param args
*/
public static void main(String[] args) {
try {
IndexSearcher search = new IndexSearcher("d://demo");
Term t1 = new Term("bookname","女");
Term t2 = new Term("bookname","狗");

TermQuery q1 = new TermQuery(t1);
TermQuery q2 = new TermQuery(t2);

BooleanQuery query = new BooleanQuery();
query.add(q1,BooleanClause.Occur.MUST);
query.add(q2,BooleanClause.Occur.MUST);

Hits hits = search.search(query);
for(int i=0;i>
2.MUST.MUST_NOT
MUST和MUST_NOT的组合表示查询的结果中不能包含MUST_NOT所对应的查询子句的检索结果。
程序:
Term t1 = new Term("bookname","女");
Term t2 = new Term("bookname","狗");

TermQuery q1 = new TermQuery(t1);
TermQuery q2 = new TermQuery(t2);

BooleanQuery query = new BooleanQuery();
query.add(q1,BooleanClause.Occur.MUST);
query.add(q2,BooleanClause.Occur.MUST_NOT);


打印:
Document<stored/uncompressed,indexed,tokenized<bookname:英勇儿女>>
Document<stored/uncompressed,indexed,tokenized<bookname:白毛女>>
Document<stored/uncompressed,indexed,tokenized<bookname:女人是水做的>>
Document<stored/uncompressed,indexed,tokenized<bookname:我的兄弟和女儿>>

3.MUST_NOT与MUST_NOT没有含义

4.SHOULD与MUST和SHOULD与MUST_NOT

他和MUST联用,失去意义,检索结果为MUST的结果集,和MUST_NOT联用时候,SHOULD的功能和MUST功能一样。

5.SHOULD与SHOULD

表示一种或的关系。检索结果为两者的并集。

程序:

query.add(q1,BooleanClause.Occur.SHOULD);
query.add(q2,BooleanClause.Occur.SHOULD);

打印:

Document<stored/uncompressed,indexed,tokenized<bookname:篱笆女人和狗>>
Document<stored/uncompressed,indexed,tokenized<bookname:英勇儿女>>
Document<stored/uncompressed,indexed,tokenized<bookname:白毛女>>
Document<stored/uncompressed,indexed,tokenized<bookname:女人是水做的>>
Document<stored/uncompressed,indexed,tokenized<bookname:我的兄弟和女儿>>

 

布尔查询对其子句的数量是有限制的默认限制为1024条子查询,如果查过了,会抛出TooManyClauses异常,当然用户也可以通过BooleanQuery的方法setMaxClauseCount(int maxClauseCount).

布尔查询的子句并非只能对TermQuery的原子查询,也可以进行BooleanQuery的符合查询。

分享到:
评论

相关推荐

    C#调用Lucene方法-实现快速搜索

    2. **创建索引**:索引是Lucene搜索的核心。我们需要定义一个Analyzer(分析器)来处理文本,如使用StandardAnalyzer进行英文分词。然后,使用Directory(目录)对象(如FSDirectory)指定存储索引的位置,最后使用...

    利用Lucene 实现高级搜索

    ### 利用Lucene实现高级搜索的关键知识点 #### Lucene简介 ...总之,Lucene提供了丰富的搜索功能,包括布尔操作符、域搜索、通配符搜索、模糊查询和范围搜索,使开发者能够根据具体需求定制高级搜索应用。

    Lucene全文搜索_LuceneJava全文搜索_

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

    Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...

    lucene站内搜索

    **Lucene站内搜索技术详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎和站内搜索解决方案中。它提供了丰富的文本分析、索引和搜索功能,使得开发者能够轻松地在自己的...

    lucene搜索引擎项目

    《深入理解Lucene搜索引擎项目》 Lucene是一个高性能、全文本搜索库,它为开发者提供了在Java应用程序中实现全文检索的工具集。这个名为“lucene搜索引擎项目”的资源,旨在帮助用户更好地理解和应用Lucene来构建...

    LUCENE搜索引擎基本工作原理

    **LUCENE搜索引擎基本工作原理** Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **...

    lucene3.6 搜索例子

    1. 查询构造:Lucene支持多种查询语法,如布尔查询、短语查询、范围查询等。通过QueryParser,我们可以根据用户输入的关键词生成对应的查询对象。 2. 查询执行:使用IndexSearcher类执行查询。IndexSearcher会遍历...

    基于Lucene的搜索引擎的研究与应用

    Lucene使用倒排索引,能够快速准确地对大量文本数据进行索引,并通过布尔逻辑等查询方式快速检索数据。 2. Lucene的关键特性 Lucene的API包含多个子包,用于实现不同的功能。例如,org.apache.lucene.analysis用于...

    lucene实现企业搜索实例

    **Lucene实现企业搜索实例** 在企业环境中,高效、精准的搜索能力是至关重要的,它可以帮助员工快速定位信息,提高工作效率。Apache Lucene是一个开源的全文检索库,它提供了强大的文本搜索功能,能够帮助企业构建...

    lucene 实现类似百度搜索

    **Lucene 搜索引擎实现详解** Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会维护。它提供了一套强大的数据结构和算法,用于高效地存储和检索大量文本数据。通过 Lucene,开发者可以轻松地在自己的应用...

    开发自己的搜索引擎 lucene + heritrix

    理解Lucene和Heritrix的工作原理和使用方法,以及如何将两者结合构建有效的搜索引擎,对于完成这项工作至关重要。同时,针对垂直领域的深入理解与合理设计也是构建出有商业价值的搜索引擎的重要前提。

    基于Lucene的桌面搜索引擎.doc

    除了基础的搜索功能,Lucene还支持布尔查询、短语查询、模糊查询、评分和排序等高级搜索特性。此外,通过使用Lucene的更新和删除机制,可以确保索引始终与数据源保持同步,保证搜索的准确性。 综上所述,基于Lucene...

    ssh+lucene搜索实例

    在这个"ssh+lucene搜索实例"中,我们可以理解为结合了SSH和Lucene两个技术,以实现远程服务器上的全文检索功能。例如,可能有一个需求是在多个远程服务器上存储大量数据,而这些数据需要通过关键词进行快速搜索。在...

    lucene开发WEB搜索引擎

    - Query:表示一个搜索查询,可以是简单的关键词查询,也可以是复杂的布尔组合。 - IndexSearcher:执行搜索的类,提供search方法。 - TopDocs:搜索结果的集合,包含匹配的文档和它们的得分。 - ScoreDoc:每个匹配...

    Lucene搜索-引擎开发权威经典pdf+源码第二部分

    《Lucene搜索-引擎开发权威经典》是一本深入解析Apache Lucene搜索引擎库的专业书籍,它为读者提供了构建高效全文搜索引擎的全面指南。Lucene是Java领域最著名的全文检索库,被广泛应用于各种信息检索系统中,包括...

    [Lucene搜索引擎开发权威经典].zip

    《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,作者于天恩在书中详尽地阐述了Lucene的核心概念、工作原理以及实际应用。这本书旨在帮助读者理解如何利用Lucene构建高性能、可扩展的全文搜索...

    Weblucene 站内搜索

    除了基础功能,Weblucene还提供了许多高级特性,如布尔查询、短语搜索、模糊匹配、近似搜索等。你可以根据具体需求,学习并应用这些特性来提升搜索体验。 **5. 维护与升级** 为了保证Weblucene的稳定性和安全性,...

    lucene搜索引擎配置详解

    本文将深入探讨Lucene搜索引擎的配置过程,包括文件加载、索引创建和搜索操作,帮助你理解其核心技术。 ### 文件加载 在Lucene中,首先需要将待搜索的数据加载到内存或磁盘上的某个结构中。这通常涉及到读取各种...

Global site tag (gtag.js) - Google Analytics