lucene高级搜索

lucene中的提供了一套QueryParser类,用来进行解析搜索请求。

搜索请求就是用户输入关键词后,然后程序去分析关键词,获取用户搜索的真实意图。

QueryParser的基本使用:

queryParser用来分析用户输入的关键词,将关键词转换为query对象。其构造方法如下:

QueryParser parser = new QueryParser(Version.3.0,"title",new StandardAnalyzer(Version3.0));

Query query = parser.Parse("基金");

这里,queryParser解析为了“title:基金”这种形式。

这种形式是lucene的搜索格式:域名:值。

使用QueryParser解析多个关键词。

如果将"love china"传递给搜索引擎,他会这样操作:

1.搜索到所有包含love这个词的记录和所有包含china这个词的记录,然后将两部分记录加在一起,这是或的关系

2.搜索到所有包含love的记录和所有包含china的记录,然后去他们的交集,这是与关系。

Query q = parser.Parse("love china");//title:love,title:china

分为两个词进行查询,然后进行取交集。

2.高级搜索

  • 多字段的搜索
  • 多索引搜索

多字段搜索:一个文档中含有“标题”,“正文”等字段,搜索一个关键词,不管在标题中出现还是在正文中出现都算符合条件,这就是多字段的搜索。

利用BooleanQuery实现多字段的搜索

设置两个TermQuery,然后再他们之间做逻辑运算即可:

Document doc1 = new Document();

doc1.add(new Field("title","hello",Field.Store.Yes,Field.Index.Analyzed));

doc1.add(new Field("body","china",Field.Store.Yes.Field.Index.Analyzed));

writer.addDocument(doc1);

Term t1 = new Term("title","hello");

Term t2 = new Term("body","china")

Termquery q1 = new TermQuery(t1);

Termquery q2 = new Termquery(t2);

BooleanQuery bq = new BooleanQuery();

bq.add(q1,Occur.Must);//语法树格式的查询,should must not

bq.add(q2,Occur.Must);

TopDocs docs = searcher.serach(q,null,10);

2.用multiFieldQueryParser实现多字段的搜索,内部还是BooleanQuery实现的,只不过是个封装。其构造方法如下:

MultiFieldQueryParser(Version,String [] Fields,Analyzer);

fields数组是多个字段名称组成的数组;

String [] fields ={"title","body"};

MultiFieldQueryParser  mp = new MultiFieldQueryParser(Version3.0,fields,new StandardAnalyzer(Version3.0));

Query q = mp.Parser("c");//在body和title这两个域下搜索含有字母c的内容。

是逻辑或关系。

时间: 2024-11-11 20:26:31

lucene高级搜索的相关文章

Lucene 高级搜索

1.文本搜索 QueryParser支持默认搜索域, 第一个参数为默认搜索域. 如果在执行parse方法的时候, 查询语法中包含域名则从指定的这个域名中搜索, 如果只有查询的关键字,则从默认搜索域中搜索结果. 需求描述 : 查询名称中包含华为手机关键字的结果. // Query query = queryParser.parse("华为手机");// 默认在name域中查 // Query query = queryParser.parse("华为 OR 手机");

SEO艺术——使用高级搜索 学习体会

前言: 在这个信息大爆炸的时代,网上的信息鱼龙混杂,有的时候我们费尽体力脑力也得不到自己想要的结果.在这个环境下,学习一个高级的搜索技术是一个现代人越来越需要掌握的一门技术和方法.于是,自己利用自己的业余时间,学习SEO的艺术,学会使用高级搜索技巧的同时,也学习影响网站搜索排名的重要因素和提高网站搜索排名的重要方法. 这是一门非常有用的技术,对于一个即将走向IT行业岗位的人来说,学习SEO技术可以大大提高自己对IT这个行业的认识和理解.借来了SEO的艺术这本书,进行初步的学习,现在整理一下高级搜

如何使用GOOGLE高级搜索技巧

原文出处: 新浪博客(未找到原始出处) 一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于1999年创立.2000年7月份,Google替代Inktomi成为Yahoo公司的搜索引擎,同年9月份,Google成为中国网易公司的搜索引擎.98年至今,GOOGLE已经获得30多项业界大奖. 二,GOOGLE特色 GOOGLE支持多达132种语言,包括简体中

Google高级搜索

GOOGLE搜索命令:filetype:pdf SEO 返回的就是包含SEO 这个关键词的所有pdf 文件site:是SEO 最熟悉的高级搜索指令,用来搜索某个域名下的所有文件.what's my location/IP 电脑的IP地址.do a barrel roll"或者"Z or R twice",让你的页面旋转360°zerg rush 从页面上方降下很多圆圈"Google Gravity",让你无视牛顿万有引力.Google Sphere&quo

Lucene全文搜索原理与使用

本文中主要是对于Lucene全文搜索的基础原理进行简单的分析,以及Lucene实现全文搜索的流程,之后就是Lucene在Java中的最简单使用:创建索引,查询索引库: 本文中使用的Lucene主要是4.10.3和6.0.0,两个版本的原理相同,但是API的使用并不相同: 1.结构化数据与非结构化数据 2.非结构化数据搜索 3.全文搜索 4.搜索如何实现 5.Lucene实现全文搜索流程 6.Lucene的API使用 1.结构化数据与非结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据

sublime 高级搜索内容

在开发中时常需要搜索文件里面的里面,不如想找到$video->getTitle() 在哪些文件里面使用到,那么这个时候就需要使用到高级搜索的功能了,操作如下: ctrl+shif+f键 弹出如下框 选择你需要查找的内容,然后确定目录路径,最后点击查找,查找的结果图如下: 速度非常之快, sublime 高级搜索内容,布布扣,bubuko.com

使用Github的高级搜索功能

1. 首先,提供Github高级搜索帮助页面 https://help.github.com/categories/search/ 2. 搜索语法 https://help.github.com/articles/search-syntax/ 比方说,你要搜索心数大于一定数目的开源代码,你可以像下面这样子来操作. 搜索某个时间段之后创建出来的代码. 获取星星数目介于某段区域 设置语言限制的搜索: 一套完整的搜索流程: Omit quotation marks and spaces in quer

值得珍藏:印象笔记Evernote中进行高级搜索的语法分享

印象笔记/Evernote中的搜索我觉得有三大特色: 使用专用语法进行高级搜索 高级版用户支持在pdf.图片中搜索文字 把搜索保存起来,加入快捷方式 今天我想把我搜集的关于在印象笔记Evernote里进行高级搜索的语法共享给大家,大家可以结合自己的需求创建好各种搜索语句,然后保存到快捷方式,提高"用"笔记的效率.例如我的快捷方式了保存了这样的搜索条件: 继续阅读>>

Google高级搜索语法

Google高级搜索语法 Google搜索果真是一个强悍的不得了的搜索引擎,今天转了一些 google的高级搜索语法 希望能帮助到大家. 一.allinanchor: anchor是一处说明性的文字,它标注说明了这个链接可能跳转到其它的网页或跳转到当前网页的不同地方.当我们用allinanchor提交查询的时 候,Google会限制搜索结果必须是那些在anchor文字里包含了我们所有查询关键词的网页.例[ allinanchor: best museums Sydney ] ,提交这个查询,Go