`

Lucene的简单查询

 
阅读更多

一、特定查询

   基本是对一个域进行匹配单一的匹配查询

 

                          Term term=new Term("name","小小");
	        TermQuery query=new TermQuery(term);
	        TopDocs hits=searcher.search(query,10);

 二、QueryParse的简单用法

     基本是对输入的查询先分词然后生成Query的子类,这样是查询共能更加的灵活和强大

 

QueryParse pq=new QueryParse("版本",域,分词器);
Query q=pq.parse("内容");


   内容有些基本的格式

 

java                                                默认包含

java junit /java or junit                          包含一个或者两个

+java +junit /java and junit                         两个都包含

title:ant                                          title域中包含ant

title:extreme -subject:sports                  title中包含切subject中没有
/title:extreme and not subject:sprots                  sprots

(agile or extreme) and method         默认域包含前面的一个或者两但一定包含metod  

title:"junit in action"                  title域为junit in action的文档

title:"junit  action "~5            title域中junit 和action 之间距离小于5的文档

java*                                        前缀是java的文档

java~                                       包含相似的文档lava

lastmodified:(1/1/09~12/31/09)           lastmodified域在第一个日期和第二个日期之间

 练习下简单的搜索

 

QueryParse qp=new QueryParse(版本,域,分词);
Query q=qp.parse("name: 小* and not ype:天灾")
查询的是名字是前缀是小,但是不是天灾的。

 结果

 

阵营==近卫
名字==小小
id==2
阵营==近卫
名字==小牛
id==4

 搜索

 

  QueryParser q=new QueryParser(Version.LUCENE_42, "name", new SmartChineseAnalyzer(Version.LUCENE_42));
	  query=q.parse("name: 小*");

 结果:

 

阵营==近卫
名字==小小
id==2
阵营==近卫
名字==小牛
id==4
阵营==天灾
名字==小黑
id==5

 三、IndexSearch的基本用法

   声明

 

IndexSearch serch=new IndexSearch(IndexReader);
IndexReader的消耗的资源很多,一般一个IndexReader重复使用
             reOpen();用于索引的改变时重新打开
             多线程使用的时候注意线程安全,并关闭老的IndexReader

 search()的常用方法

 

TopDocs  search(query,int)        返回评分高的前N个

TopDocs search(query,Filter,int)  受文档子集约束,约束基于过滤策略

TopFileldDocs search(query,Filter,int,sort)......排序

void search(query,Collector)      不想返回前N个

void search(query,Filter,Collector)...有过滤策略

 四TopDocs常用方法

 

totalHits                     匹配搜索条件的文档那个数

getMaxScore              最大的评分数


ScoreDocs                  匹配文档的一个集合

 五、多样化的查询

 

TermQuery         关键字进行查询

TermRangeQuery    进行一个查询范围选择


NumercRangeQuery 对数字进行范围的一个查询

PrefixQuery         层次递归进行查询通过字符串进行搜索

BooleanQuery  综合查询允许进行进行组合操作的逻辑运算
                BooleanClause.Occur.Must and
                        .............................SHOULD or

PhraseQuery         短语搜索
 
WildCardQuery      通配符查询 */?

FuzzyQuery            模糊查询

MatchAllDocsQuery  匹配所有的

 

分享到:
评论

相关推荐

    lucene的查询语法事例

    Lucene的查询语法基于简单的字符串匹配,主要包含以下几种基本元素: - **单个词项查询 (Term Query)**:最基础的查询形式,如`title:"Java编程"`,会查找所有标题字段中包含"Java编程"的文档。 - **短语查询 ...

    Lucene3.0之查询类型详解

    - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较低。 - **索引查询**:基于预构建的索引结构,能够快速找到匹配的文档,是Lucene的主要查询方式。 2. **理论模型**: - **布尔模型**:基于集合论和...

    lucene搜索的简单入门例子源代码

    这个简单的例子展示了Lucene的基本工作流程,但实际应用中可能涉及更复杂的逻辑,如多字段搜索、模糊查询、排序、过滤器和高亮显示等。Lucene还支持分布式搜索,能够处理大规模的数据集。随着对Lucene的理解深入,你...

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

    在阅读完博客后,你可以尝试自己动手实践,用Lucene创建一个简单的搜索应用,这样能更好地掌握这些知识点。 总的来说,Lucene的多字段查询和文字高亮显示是提高用户体验和增强搜索功能的关键技术。它们使得用户能够...

    lucene facet查询示例

    以下是一个简单的区间查询示例: ```java FacetsConfig config = new FacetsConfig(); config.setIndexFieldName("price", "price_dim"); ... NumericRangeFacetField priceLowToHigh = new ...

    Lucene 索引的简单使用

    以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...

    Lucene时间区间搜索

    以下是一个简单的示例,展示了如何在C#中构建和执行时间区间查询: ```csharp using Lucene.Net.Index; using Lucene.Net.Search; // 假设我们有一个名为dateField的时间戳字段 var startDate = new DateTime(2020...

    Lucene的简单介绍

    Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在目标系统中实现全文搜索功能或构建一个完整的全文搜索引擎。 Lucene的主要优点包括: 1. 索引文件格式独立于应用平台:Lucene定义了一套以8位字节为...

    spring-lucene简单项目

    在"spring-lucene简单项目"中,你还会遇到一些关键概念,例如倒排索引、TF-IDF(词频-逆文档频率)相关性计算、以及布尔查询等。这些都是Lucene实现高效搜索的基础。 通过这个项目,你不仅能够掌握Spring和Lucene的...

    Lucene 简单入门程序实例

    标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...

    lucene简单介绍及solr搭建使用

    标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...

    Lucene简单Demo(附带Jar)

    **Lucene的简单使用流程** 1. **创建Analyzer**: 根据需求选择或自定义分析器,例如使用StandardAnalyzer处理英文文本。 2. **创建Document**: 定义要索引的字段和内容,例如`document.add(new TextField("content...

    简单的lucene demo

    **标题:“简单的lucene demo”** Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发并维护,它在Java编程语言中实现,广泛应用于各种搜索应用的构建。这个“简单的lucene demo”旨在向我们展示如何利用...

    lucene简单demo

    这个“lucene简单demo”将向我们展示如何使用Lucene进行基本的文本检索操作。 **Lucene核心概念** 1. **索引(Indexing)**: 在Lucene中,索引是将文档内容转换为可供快速搜索的数据结构的过程。它将文本分解成...

    Lucene示例 BM25相似度计算

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

    Lucene简单使用需要的jar

    3. **查询解析**:`lucene-queryparser-7.2.1.jar`则包含了查询解析器,负责将用户输入的查询字符串转化为可执行的搜索表达式。 **其他依赖** - **IKAnalyzer2012FF_u1.jar**:这是一款基于Java的中文分词工具,...

    lucene for java 简单demo

    **Lucene for Java 简单DEMO** Lucene 是一个全文搜索引擎库,由Apache软件基金会开发并维护,它提供了一个高效、可扩展的搜索框架,使得开发者可以轻易地在自己的应用程序中集成全文检索功能。Java是Lucene的主要...

    lucene简单代码列子

    《Lucene简单代码实例解析》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...

Global site tag (gtag.js) - Google Analytics