`
baobeituping
  • 浏览: 1042159 次
  • 性别: 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的符合查询。

分享到:
评论

相关推荐

    lucene搜索引擎【代码以及jar包】

    Lucene作为一个全文检索引擎... (5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。

    利用Lucene 实现高级搜索

    布尔操作符 域搜索 通配符搜索 模糊查询 范围搜索

    使用Lucene实现一个简单的布尔搜索功能

    Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品...接下来通过本文给大家介绍使用Lucene实现一个简单的布尔搜索功能

    【分享:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    4.9.1. 改变默认的布尔逻辑 11 4.9.2. 不需要分词 12 4.9.3. 设置坡度值,支持FuzzyQuery 12 4.9.4. 设置通配符,支持WildcardQuery 12 4.9.5. 查找指定的Field 12 4.9.6. 范围的查找,支持RangeQuery 13 4.9.7. 现在...

    自己动手写搜索引擎(罗刚著).doc

    7.3.1 布尔搜索 183 7.3.2 指定范围搜索 183 7.3.3 设置过滤条件 188 7.3.4 搜索结果排序 188 7.3.5 搜索页面的索引缓存与更新 190 7.4 实现关键词高亮显示 191 7.5 实现多维视图 194 7.6 实现相似文档搜索 200 7.7 ...

    BlogSearchWithLucene:lucene研究项目

    杰森博客,搜索部分 lucene研究项目 使用保定分析器进行中文分词 布尔查询 提供socket服务

    lunces入门资料

    如常见的TermQuery就是将一个简单的关键字进行封装后的对象,类似的还有BooleanQuery,即布尔型的查找。 IndexSearcher对象的search方法中总是需要一个Query对象(或是Query子类的对象),本节就来介绍各种Query类...

    opensearchserver:开源企业级搜索引擎软件-Open source

    使用查询语言的高级布尔搜索 分面和折叠的聚类结果 使用子请求过滤搜索(包括否定过滤器) 地理位置定位 拼写检查 相关性定制 搜索建议功能(自动完成) 索引化 支持18种语言 带有每种语言的分析器的字段架构 几个...

    elastiknn:Elasticsearch插件,用于最近的邻居搜索。 存储向量并使用精确算法和近似算法运行相似性搜索

    Elasticsearch插件,用于在密集的浮点和稀疏布尔向量上进行相似性搜索。 文献资料 如果您想为Elastiknn做出贡献,请参阅developer-guide.md。 社区 如果您有疑问,错误等,请在上。 用户数 您正在使用Elastiknn吗?...

    luwak:一个用于存储查询的Java库

    Luwak基于开源Lucene搜索库,是一种高性能的存储查询引擎。 简而言之,它允许您定义一组搜索查询,然后监视文档流中是否存在与这些查询匹配的任何内容:此功能也称为“反向搜索”和“文档路由”。 Flax为经常使用...

    SearchEngines

    使用 Lucene 搜索引擎库中的类。 阶段 1:布尔检索程序支持运算符:OR、AND 和 NEAR/n。 阶段 2:添加 BM25 和 Indri 排名算法。 添加运算符:BM25 SUM 和 Indri AND 阶段 3:添加几个新的查询运算符:WINDOW、...

    word2vecjava版源码-SolrPlugins:来自SimonHughesDice.com的DiceSolr插件

    word2vec java版源码DiceTechJobs - Solr 插件 ...的 Solr ...概念搜索实现所需的插件(参见 Lucene Revolution 2015 talk - ) 自定义查询解析器: VectorQParser (用于处理密集向量字段)、 QueryB

    Mustru: A QA Search Engine-开源

    Mustru是基于Lucene的桌面问答搜索引擎。 您可以使用自然语言问题或布尔查询来搜索本地文件系统。 将返回答案或命中列表。 包括基于Web的界面。

    一个小型的全文检索引擎的DEMO

    里面基本包含了全文检索引擎的所有技术,包括词典分词,索引,检索等,其中词典分词采用的是基于双数组tire树的最大匹配法,索引部分参考了lucene的部分实现,检索部分应用了布尔检索和向量模型的排名算法,基本可以...

Global site tag (gtag.js) - Google Analytics