- 浏览: 293652 次
- 性别:
- 来自: 东京
文章分类
最新评论
-
80后的童年2:
企业级分布式搜索平台Solr视频教程网盘地址:https:// ...
企业级搜索引擎Solr使用入门指南 -
springdata_spring:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene / Solr 开发经验 -
springdata-jpa:
java web开发分页demo源代码下载:http://ww ...
简易java分页标签 -
zjf_sdnu:
兄弟,script写错了
jqGrid初学备注 -
85600367:
你好,请教一个问题。当进行分布式查询时solr无法查询到Luc ...
Lucene / Solr 开发经验
一,查询
一个关键字,对一个字段进行查询
QueryParser qp = new QueryParser("content",analyzer); query = qp.parse(keyword); Hits hits = searcher.search(query);
模糊查询
Term term = new Term("content",keyword); FuzzyQuery fq = new FuzzyQuery(term); Hits hits = searcher.search(fq);
一个关键字,在两个字段中查询
1.BooleanClause.Occur[]的三种类型: MUST : + and MUST_NOT : - not SHOULD : or
2.下面查询的意思是:content中必须包含该关键字,而title有没有都无所谓
3.下面的这个查询中,Occur[]的长度必须和Fields[]的长度一致。每个限制条件对应一个字段
BooleanClause.Occur[] flags = new BooleanClause.Occur[]{BooleanClause.Occur.SHOULD,BooleanClause.Occur.MUST}; query=MultiFieldQueryParser.parse(keyword,new String[]{"title","content"},flags,analyzer);
两个(多个)关键字对两个(多个)字段进行查询,默认匹配规则
1.关键字的个数必须和字段的个数相等
2.由于没有指定匹配规定,默认为"SHOULD" 因此,下面查询的意思是:"title"中含有keyword1 或 "content"含有keyword2。在此例中,把keyword1和keyword2相同
query=MultiFieldQueryParser.parse(new String[]{keyword,keyword},new String[]{"title","content"},analyzer);
两个(多个)关键字对两个(多个)字段进行查询,手工指定匹配规则
1.必须 关键字的个数 == 字段名的个数 == 匹配规则的个数
2.下面查询的意思是:"title"必须不含有keyword1,并且"content"中必须含有keyword2
BooleanClause.Occur[] flags = new BooleanClause.Occur[]{BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.MUST}; query=MultiFieldQueryParser.parse(new String[]{keyword,keyword},new String[]{"title","content"},flags,analyzer);
对数字范围进行查询
1.两个条件必须是同一个字段
2.前面一个条件必须比后面一个条件小,否则找不到数据
3.new RangeQuery中的第三个参数,表示是否包含"=" true: >= 或 <= false: > 或 <
4.找出 55>=id>=53 or 60>=id>=57:
Term lowerTerm1 = new Term("id","53"); Term upperTerm1 = new Term("id","55"); RangeQuery rq1 = new RangeQuery(lowerTerm1,upperTerm1,true); Term lowerTerm2 = new Term("id","57"); Term upperTerm2 = new Term("id","60"); RangeQuery rq2 = new RangeQuery(lowerTerm2,upperTerm2,true); BooleanQuery bq = new BooleanQuery(); bq.add(rq1,BooleanClause.Occur.SHOULD); bq.add(rq2,BooleanClause.Occur.SHOULD); Hits hits = searcher.search(bq);
二:结果排序
排序的关键点有两个:
1:首先你要排序的字段必须是被index的,并且是untokenized的。如:
doc.add(new Field("click", dv.get("click").toString(), Field.Store.NO, Field.Index.UN_TOKENIZED));
2:在检索时候:如:
排序
1.被排序的字段必须被索引过(Indexecd),在索引时不能 用 Field.Index.TOKENIZED (用UN_TOKENIZED可以正常实现.用NO时查询正常,但排序不能正常设置升降序)
2.SortField类型 SCORE、DOC、AUTO、STRING、INT、FLOAT、CUSTOM 此类型主要是根据字段的类型选择
3.SortField的第三个参数代表是否是降序true:降序 false:升序
Sort sort = new Sort(new SortField[]{new SortField("click", SortField.INT, true)}); Hits hits = searcher.search(querystring,sort);
按日期排序
Sort sort = new Sort(new SortField[]{new SortField("createTime", SortField.INT, false)});
过滤器
QueryParser qp1 = new QueryParser("content",analyzer); Query fquery = qp1.parse("我"); BooleanQuery bqf = new BooleanQuery(); bqf.add(fquery,BooleanClause.Occur.SHOULD); QueryFilter qf = new QueryFilter(bqf); Hits hits = searcher.search(query);
--------------------------------------------------
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); //在title和content中找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);
发表评论
-
Struts2 Jsonplugin 详解
2009-07-08 21:41 7058本文转自: http://www.blogjava.net/f ... -
一点struts json备注
2009-07-05 00:30 1503下载struts json插件:jsonplugin-0.33 ... -
Hibernate annotation简单配置
2009-06-29 00:04 1611<?xml version="1.0" ... -
Liferay下整合Spring和Hibernate开发Plugin初试
2009-05-26 00:41 4842简单的说,完全不知道Liferay下应该如何做开发。所以完全凭 ... -
Liferay plugin开发入门
2009-05-19 00:10 2685本篇部分引用以下文章: http://daoger.itey ... -
Hibernate通用DAO
2009-01-02 17:46 3596/** * @author Clay Zhong, zjcl ... -
Acegi获取用户信息
2008-12-04 23:38 2810import org.acegisecurity.Authen ... -
Acegi详解
2008-11-16 21:15 1734本文转自:http://www.yuanma.org/data ... -
velocity.properties source code
2008-11-04 22:37 2965# Licensed to the Apache Softwa ... -
DetachedCriteria,Hibernate模糊查询
2008-09-21 10:59 41601,假设存在Thesis对象: package org.cms ... -
Solr中SimplePostTool的修改
2008-09-15 22:38 2919将源代码修改为传递字符串,去掉files以及stdin模式。 ... -
Struts2,Spring2,Hibernate3整合
2008-09-15 11:44 33261. web.xml <?xml version=&qu ... -
企业级搜索引擎Solr使用入门指南
2008-09-10 22:43 16622本文转自 http://chuanliang2 ... -
Lucene / Solr 开发经验
2008-09-10 22:12 19970转自 Lucene/Solr开发经验[原] 作者 张驰有道 ... -
Lucene初学备注
2008-09-07 19:51 12261,检索文件目录,创建index import java.io ... -
JR各Ajax框架基础教程收集
2008-08-24 12:19 1162JQuery: http://www.javaresearch ... -
Spring 2.0 中配置 JPA
2008-04-20 16:57 3842翻译:SpringSide团队 转载请注明出处。 本文提供了 ... -
Hibernate延迟加载
2008-02-09 16:22 2703延迟初始化错误是运用Hibernate开发项目时最常见的错误。 ... -
Properties资源文件编码
2008-01-26 17:26 14791、展开Eclipse的Help菜单,将鼠标移到Softwar ... -
struts+hibernate分页
2007-12-17 20:53 1689新建表 sql 代码 DROP DATABAS ...
相关推荐
Lucene 常用功能介绍,视频详解,带课程文档Lucene 常用功能介绍
lucene3.6 搜索例子
lucene 高级搜索项目 附件搜索 附件内容搜索 全文搜索
Lucene实现全文搜索,支持英文、模糊和智能查询
基于Lucene的搜索策略研究
基于Lucene的搜索引擎的研究与应用基于Lucene的搜索引擎的研究与应用
lucene 近实时搜索 很清楚的解释了关于lucene近实时搜索的代码。很值得学习
18.Lucene排序 共6页 19.Lucene过滤 共4页 20.Lucene分词器1 共3页 21.Lucene分词器2 共9页 22.Lucene分词器3 共4页 23.Lucene项目实战1 共6页 24.Lucene项目实战2 共6页 25.Lucene项目实战3 共6页 26.Lucene项目...
Lucene 实时搜索,视频详解,带课程文档,Lucene 实时搜索
lucene3.0.3搜索的使用示例lucene3.0.3搜索的使用示例lucene3.0.3搜索的使用示例
基于lucene的搜索引擎regain安装版
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
基于Lucene的一个财经类网页搜索引擎,对于Lucene爱好者与新手来说,是个很不错的东东哦,呵呵。
全文检索介绍 索引 分词 Lucene介绍 Lucene应用详解 索引器 检索器 条件查询 实用工具及高亮器 Lucene综合应用——仿搜索引擎
利用lucene进行搜索,IndexSearcher是整个Lucene搜索查询相关信息的驱动引擎,在使IndexSearcher之前,需要构建IndexSearcher对象,Lucene提供了两种构建IndexSearcher对象的方式: 1、基于Directory对象构建; 2...
Lucene Demo 挺全的实例,适合初学者。
主要是关于lucene站内搜索的技术代码,可以使用;按照需要进行代码修改。
18.Lucene排序 共6页 19.Lucene过滤 共4页 20.Lucene分词器1 共3页 21.Lucene分词器2 共9页 22.Lucene分词器3 共4页 23.Lucene项目实战1 共6页 24.Lucene项目实战2 共6页 25.Lucene项目实战3 共6页 26.Lucene项目...
lucene全文搜索ajax例子,集成高亮显示。多次搜索等功能了,解压就可以运行了
lucene 搜索中文文档,写的比较详细