`

Lucene的简单查询(二)

阅读更多

一、查询

    1.查询的基本方法

           search.search(query, results)
	   search.search(query, n)
	   search.search(query, filter, results)
	   search.search(query, filter, n)
	   search.search(query, n, sort)
	   search.search(query, filter, n, sort)
	   search.search(query, filter, n, sort, doDocScores, doMaxScore)

    2.平时常用的基本方法 排序

search(query,n)//这样自动排一个序,根据文档的综合得分 倒序排列

    

search.search(query, n, Sort.INDEXORDER); //根据doc的ID来排序的

 

search.search(query, n, Sort.RELEVANCE);跟默认的分排序时一样的

   

search.search(query,n, new Sort(new SortField("time", SortField.Type.LONG)));//但是添加了一个域用添加索引的时间,这样排序是根据整个索引匹配的时间向下递增的

 

search.search(query, n, new Sort(new SortField("time", SortField.Type.LONG,true))); //倒排

   过滤

         Term t=new Term("type","俄国");
	  Query query_2=new TermQuery(t);
	  Filter categoryFilter=new QueryWrapperFilter(query_2);
	   TopDocs hits =search.search(query, categoryFilter, 10);
//把类别是俄国的从结果中筛选出来。结果还是按照得分倒排的

 

当然生成Sort的时候还可以添加多个,SortField实例化的时候是一个变参。

 

SortField.Type属性有多个有数据类型的,还有SCORE,DOC对准文档的。

三 、MultiPhraseQuery

基本的用法

   MultiPhraseQuery query=new MultiPhraseQuery();
	   query.add(new Term[]{new Term("countent","兴奋"),new Term("countent","高兴")});
           query.add();//接着添加一个之不过应该是先匹配上面的 一个方面的多种情况
	   TopDocs hits=search.search(query, 10);
//是可以在同一个域中进行多项匹配索引。相当于or。不同域会报错的

 转换//

 PhraseQuery p=new PhraseQuery();
	   p.setSlop(1);
	   p.add(new Term("countent","兴奋"));
	   p.add(new Term("countent","高兴"));
	   
	   PhraseQuery pp=new PhraseQuery();
	   pp.add(new Term("countent","快乐"));
	   pp.add(new Term("countent","高兴"));
	   
	   BooleanQuery query=new BooleanQuery();
	   query.add(p,BooleanClause.Occur.SHOULD);
	   
	   query.add(pp,BooleanClause.Occur.SHOULD);
	   
//p.setSlop(int);匹配因子可以精确查询,默认是0则是相邻的词组,不是则在这个范围内。

 四、多域查询

   1.直接用MultiFieldQueryParser进行跟据它的一些语法;

 Query query=new MultiFieldQueryParser(Version.LUCENE_42,new String[]{"countent","type"},new SmartChineseAnalyzer(Version.LUCENE_42)).parse("俄国 前少年");
	   TopDocs hits=search.search(query, 10);

 

 中间的是:域和分词

  Query query=MultiFieldQueryParser.parse(Version.LUCENE_42, "俄国青少年", new String[]{"countent","type"},
			   new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST},new SmartChineseAnalyzer(Version.LUCENE_42) );
	   
	   TopDocs hits=search.search(query, 10);

 

 
 中间的是:域和分词

  • 大小: 37.5 KB
  • 大小: 30.7 KB
分享到:
评论

相关推荐

    lucene实战第二版

    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...

    Lucene 3.6 学习笔记

    第二章 索引建立 3 2.1 创建Directory 3 2.2 创建Writer 3 2.3 创建文档并且添加索引 4 2.4 查询索引的基本信息 5 2.5 删除和更新索引 5 (1) 使用writer删除 5 (2) 使用reader删除 5 (3) 恢复删除 5 (4) 彻底删除 6 ...

    Lucene7.1.0

    Apache Lucene 7.1.0 发布了,Lucene 是 Apache 软件基金会的一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene 的目的是为软件开发人员...

    基于ASP.Net和Lucene.Net开发的站内搜索引擎Demo源码+项目说明+sln解决方案.zip

    基于ASP.Net和Lucene.Net开发的站内搜索引擎Demo源码+项目说明+sln解决方案.zip 1)EDC.SearchEngine.Dao  顾名思义,数据访问层,与数据库进行交互,各种SQL! (2)EDC.SearchEngine.Service  业务逻辑层,对...

    luxugang#Lucene-7.5.0#索引文件的读取(七)1

    为了便于介绍,使用了文章Automaton(二)中提供的例子:图1:结合图1的例子,获取满足查询条件(第79行代码)的所有term的过程可以简单的用一句话来描述

    HaLucene-basic:Haskell中Lucene核心功能的基本实现。 将随着时间的推移而延长

    这些模块中的每个模块都包含HaLucene库的函数,可与简单示例一起使用。 一切将仅以英语进行。 第二部分是通过电子商店产品示例展示已实现的HaLucene库的用法。 主要目标是加载带有产品ID,产品描述和关键字的CSV...

    solr 企业搜索引擎教程

    Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一 ... 基于 WEB 的查询和调试输出:解析查询输出,Lucene 的 explain 方法细节,能够解释为 何某个文档打分低,被排除在结果中等等

    plyse:简单且可扩展的查询解析器

    Plyse是一个查询解析器,其灵感来自完全可扩展和可配置的lucene和gmail语法,使您可以专注于使后端找到用户想要的内容,而无需担心解析用户查询,定义语法和查询树。 Plyse基于 ,具有默认语法,可让您配置和扩展它...

    hibernate annotation 中文文档

    2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每...

    Hibernate Annotations 中文文档

    2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2....

    分布式全文检索引擎ElasticSearch原理及使用实例

    当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 可实现亿级数据实时查询 实时分析的分布式...

    Java EE常用框架.xmind

    SOAP-Simple Object Access Protocol(简单对象访问协议) SOA(Service-Oriented Architecture) :面向服务的架构 它是一种思想,IBM大力倡导是即插即用的,IBM大力提倡,希望以组装电脑的方式来开发...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     2.3 案例:简易号码簿 24  2.3.1 案例功能描述 25  2.3.2 数据准备 25  2.3.3 设计关注提示语 25  2.3.4 设计关键词规则 26  2.3.5 设置默认回复 28  2.3.6 测试体验 28  2.4 自定义菜单 29  ...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包11

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包2

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包3

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包6

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

Global site tag (gtag.js) - Google Analytics