`
haiyupeter
  • 浏览: 426184 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

lucene多字段检索

阅读更多

默认情况下,IndexSearcher 类的search 方法返回查询结果时, 是按文档的分值排序的, 可以使用重载的search 方法对结果排序

IndexSearcher.search(Query,Sort);

new Sort() Sort.RELEVANCE, 以及null 一样, 采用默认排序, 要定义排序字段, 方法是将字段传入Sort 对象

Sort sort = new Sort(String field);

也可以对多个字段排序Sort sort = new Sort(String[] fields);

:

Sort sort = new Sort(new SortField[]{new SortField(“title”),new SortField(“name”)});

Hits hits=searcher.search(query,Sort);

 

多字段查找MultiFieldQueryParser

只在某些Term 中查找, 不关心在哪个字段

Query query = new MultiFieldQueryParser.parse(“word”,new String[]{“title”,”content”},analyzer); // titlecontent 中找word

多字段时默认是OR 关系, 要改变它, 使用以下方法:

Query query = MultiFieldQueryParser.parse(“word”,new String[]{“title”,”content”},new int[]{MultiFieldQueryParser.REQUIRED_FIELD,MultiFieldQueryParser.PROHIBITED_FIELD},analyzer);

其中:

REQUIRED_FIELD 表示该条件必须有

PROHIBITED_FIELD 表示必须不含

 

索多个索引文件MultiSearcher

1)       建立多个索引: 使用不同的索引目录, 实例化不同的IndexWriter

2)       建立多索引搜索器:

Searcher[] searchers = new SEARCHER[2];

Searchers[0] = new IndexSearcher(dir1); // 搜索索引目录一

Searchers[1]= new IndexSearcher(dir2);// 搜索索引目录二

Searcher searcher = new MultiSearcher(serarchers);

3) 开始查询:Hits hits = searcher.search(query);

 

 

 

BooleanQuery typeNegativeSearch = new BooleanQuery();
QueryParser parser = new QueryParser("contents", new Analyzer());
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
query = parser.parse(queryString);
 QueryParser parser2 = new QueryParser("adISELL", new Analyzer());

 query2 = parser2.parse("\"2\"");  
QueryParser parser3 = new QueryParser("adISELL", new Analyzer());              
query3 = parser3.parse("\"2\"");             
QueryParser parser4 = new QueryParser("adISELL", new Analyzer());               
query4 = parser4.parse("\"2\"");             
QueryParser parser4 = new QueryParser("adISELL", new Analyzer());              
query4 = parser4.parse("\"2\"");   

QueryParser parser..n = new QueryParser("adISELL", new Analyzer());

query..n = parser..n.parse("\"2\"");   
                 
 typeNegativeSearch.add(query,Occur.MUST);
 typeNegativeSearch.add(query2,Occur.MUST);
 typeNegativeSearch.add(query3,Occur.MUST);
 typeNegativeSearch.add(query4,Occur.MUST);
.....
 typeNegativeSearch.add(query..n,Occur.MUST);

hits = searcher.search(typeNegativeSearch);

1, 几种span 的querySpanTermQuery :检索效果完全同TermQuery ,但内部会记录一些位置信息

,供SpanQuery 的其它API 使用,是其它属于SpanQuery 的Query 的基础。 
SpanFirstQuery
 :查找方式为从Field 的内容起始位置开始,在一个固定的宽度内查找所指定的

词条。 
SpanNearQuery
 :功能类似PharaseQuery 。SpanNearQuery 查找所匹配的不一定是短语,还有可

能是另一个SpanQuery 的查询结果作为整体考虑,进行嵌套查询。 
SpanOrQuery
 :把所有SpanQuery 查询结果综合起来,作为检索结果。 
SpanNotQuery
 :从第一个SpanQuery 查询结果中,去掉第二个SpanQuery 查询结果,作为检索结

果。

2, 多条件索引关系

BooleanClause 用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST ,

BooleanClause.Occur.MUST_NOT ,BooleanClause.Occur.SHOULD 。有以下6 种组合: 
1
 .MUST 和MUST :取得连个查询子句的交集。 
2
 .MUST 和MUST_NOT :表示查询结果中不能包含MUST_NOT 所对应得查询子句的检索结果。 
3
 .MUST_NOT 和MUST_NOT :无意义,检索无结果。 
4
 .SHOULD 与MUST 、SHOULD 与MUST_NOT SHOULD 与MUST 连用时,无意义,结果为MUST 子句的检索

结果。与MUST_NOT 连用时,功能同MUST 。 
5
 .SHOULD 与SHOULD :表示 或 关系,最终检索结果为所有检索子句的并集。

 

分享到:
评论

相关推荐

    lucene 多字段查询+文字高亮显示

    本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene多字段查询”。在信息检索系统中,用户可能希望根据多个字段来过滤和排序结果...

    Lucene4 全文检索

    每个文档由多个字段(Field)组成,每个字段包含特定类型的数据(如文本、日期等)。 - **IndexWriter**: 索引写入器用于创建和更新 Lucene 索引。它可以接收 Document 对象并将其转换为倒排索引,这是一种高效的...

    基于Lucene的全文检索系统研究与开发

    ##### 2.2 数据库字段检索模式与Lucene的区别 | 特性 | 传统数据库检索 | Lucene | | --- | --- | --- | | **适用对象** | 主要适用于结构化数据 | 适用于结构化与非结构化数据 | | **检索效率** | 对于大量非结构...

    Lucene全文检索引擎

    1. **文档(Document)**:在Lucene中,每个要搜索的文本对象被称为一个文档,文档由多个字段(Field)组成,如标题、内容、作者等。 2. **字段(Field)**:字段是文档的组成部分,每个字段都有一个名字和一个值,...

    基于Lucene的全文检索系统

    【描述】提到的“在学校教育网上搜的 不知道帮助大不大 看看吧 也许会用得到 好多个 可能有重复”暗示了资源可能包含多个关于Lucene全文检索系统的PDF文档,这些文档可能来源于不同的来源,可能涵盖相同或相似的主题...

    Lucene实现全文检索

    1. **多字段搜索**:Lucene支持对多个字段进行同时搜索,通过BooleanQuery或者DisjunctionMaxQuery实现。 2. **模糊搜索**:通过使用PrefixQuery、WildcardQuery或FuzzyQuery,可以实现模糊匹配和通配符查询。 3. ...

    lucene全文检索简单索引和搜索实例

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    Lucene全文检索案例

    8. **多字段检索** 在Lucene中,可以为多个字段创建索引,用户可以指定在哪些字段上执行查询。通过`Field`对象设置不同的分析器,可以实现对不同字段的定制化搜索。 9. **扩展性与复杂查询** Lucene支持复杂的...

    lucene3.5全文检索案例lucene+demo

    1. 文档(Document):Lucene中的最小处理单元,相当于数据库中的一条记录,由多个字段(Field)组成。 2. 字段(Field):文档的组成部分,每个字段都有特定的属性,如是否可被索引、是否可被存储等。 3. 分词器...

    lucene 全文检索

    2. **文档域**:在Lucene中,每个要被检索的文件被视为一个文档(Document),文档由多个字段(Field)组成,如标题、正文、作者等。每个字段可以有不同的分析策略。 3. **分词器(Tokenizer)**:分词器是将文本...

    lucene全文检索全面教程

    1. **多字段搜索**:Lucene允许对多个字段进行搜索,只需在查询构造时指定字段名和查询条件。 2. **评分与排序**:Lucene使用TF-IDF算法计算文档的相关性分数,搜索结果默认按分数排序。 3. **模糊搜索**:支持...

    Lucene.Net 实现全文检索

    在本案例中,我们将在 .Net MVC4 框架上使用 Lucene.Net 来构建一个全文检索系统。 首先,我们需要理解全文检索的基本概念。全文检索是指在文档集合中,根据用户输入的查询词,查找包含这些词的文档。与传统的...

    Lucene3.0全文信息检索

    在Lucene 3.0版本中,它引入了多项优化和改进,进一步提升了检索效率和用户体验。 **一、Lucene 3.0 的核心概念** 1. **索引**:Lucene首先将文档内容转换成倒排索引(Inverted Index),这是一个数据结构,用于...

    使用lucene全文检索数据库

    **使用Lucene全文检索数据库** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java编写的,能够帮助开发者在各种应用程序中实现强大的全文检索功能。在这个项目中,我们将探讨如何利用Lucene ...

    lucene全文检索word2007

    3. **文档(Document)**:在Lucene中,每个要索引的对象被表示为一个文档,包含多个字段(Field),比如Word文档的标题、内容、作者等。 4. **字段(Field)**:字段是文档的组成部分,每个字段有其特定的属性,...

    Lucene基于Java的全文检索引擎简介

    ### Lucene基于Java的全文检索引擎简介 #### 一、Lucene概述与历史背景 Lucene是一个基于Java的全文检索引擎工具包,旨在为各种规模的应用程序提供强大的文本搜索功能。该工具包由Doug Cutting创建,他是全文检索...

    SpringBoot+Lucene搜索结果高亮显示Demo

    这个SpringBoot+Lucene的Demo为开发者提供了一个起点,可以在此基础上进一步扩展,比如增加对多字段的索引和搜索、支持多种类型的文档、优化查询性能等。通过熟练掌握这些知识,你可以构建出更加强大的全文搜索引擎...

    Lucene.Net全文检索Demo

    - **Document**:表示要索引的单个数据源,可以包含多个字段(Field)。 - **Field**:文档中的信息单元,可以设置不同的属性(如是否存储原始值,是否被索引等)。 - **IndexReader** 和 **IndexSearcher**:...

    lucene 3.6 全文检索

    《Lucene 3.6 全文检索技术详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种搜索场景。在本文中,我们将深入探讨Lucene 3.6版本中的核心概念和技术,以帮助你更好地理解和应用这一...

Global site tag (gtag.js) - Google Analytics