- 浏览: 740584 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lgh1992314:
a offset: 26b offset: 24c offse ...
java jvm字节占用空间分析 -
ls0609:
语音实现在线听书http://blog.csdn.net/ls ...
Android 语音输入API使用 -
wangli61289:
http://viralpatel-net-tutorials ...
Android 语音输入API使用 -
zxjlwt:
学习了素人派http://surenpi.com
velocity宏加载顺序 -
tt5753:
谢啦........
Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
// TermQuery:词条查询。通过对某个词条的指定,实现检索索引中存在该词条的所有文档。
Query query = new TermQuery(New Term("content","java")),区分大小写
// TermRangeQuery:范围查询。这种范围可以是日期,时间,数字,大小等等。可以使用"context:[a to b]"(包含边界)或者"content:{a to b}"(不包含边界) 查询表达式
// PrefixQuery:前缀查询。 可以使用"content:lua*"表达式
// BooleanQuery:布尔查询。Lucene中包含逻辑关系:“与”,“或”,“非”的复杂查询,最终都会表示成BooleanQuery。布尔查询就是一个由多个子句和子句之间组成的布尔逻辑所组成的查询。 可以通过BooleanQuery.java类的public void add(Query query, BooleanClause.Occur occur) 方法来增加一个查询子句。子句最大数量默认为1024。
查询表达式可以通过“+”,“-”,“AND”,“OR”,“NOT”来组合。比如“+content:"abc" -title:"xyz"”
// PhraseQuery:短语查询。默认为完全匹配,但可以指定坡度(Slop,默认为0)改变范围。比如Slop=1,检索短语为“电台”,那么在“电台”中间有一个字的也可以被查找出来,比如“电视台”。 查询表达式可以为“电 台 ~1”
// MultiPhraseQuery:多短语查询。
// FuzzyQuery:类似项查询,模糊查询。模糊查询使用的匹配算法是levensh-itein算法。此算法在比较两个字符串时,将动作分为3种:加一个字母(Insert),删一个字母(Delete),改变一个字母(Substitute)。 编辑距离能够影响结果的得分,编辑距离越小得分越高.查询表达式为"fuzzy~",使用~来表示模糊查询.
// WildcardQuery:通配符查询。“*”号表示0到多个字符,“?”表示单个字符。 最好不要用通配符为首,否则会遍历所有索引项
// SpanQuery:跨度查询。此类为抽象类。
// SpanTermQuery:检索效果完全同TermQuery,但内部会记录一些位置信息,供SpanQuery的其它API使用,是其它属于SpanQuery的Query的基础。
// SpanFirstQuery:查找方式为从Field的内容起始位置开始,在一个固定的宽度内查找所指定的词条。
// SpanNearQuery:功能类似PharaseQuery。SpanNearQuery查找所匹配的不一定是短语,还有可能是另一个SpanQuery的查询结果作为整体考虑,进行嵌套查询。
// SpanOrQuery:把所有SpanQuery查询结果综合起来,作为检索结果。
// SpanNotQuery:从第一个SpanQuery查询结果中,去掉第二个SpanQuery查询结果,作为检索结果。
Query的toString()方法可以查看最终的查询表达式:
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,"context", new StandardAnalyzer(Version.LUCENE_CURRENT););
Query query = parser.parse("旧水泥袋");
输出:
context:旧 context:水 context:泥 context:袋
不能只有NOT表达式,必须跟AND,OR等其他表达式一起使用.
//QueryParser parser = new QueryParser(version, "content", analyzer);//默认在content域中查找
QueryParser parser = new MyQueryParser(version, "content", analyzer);//默认在content域中查找, 重写了getRangeQuery方法, 可以进行数字范围查询
Query query = null;
//查找content(默认域)中存在软件的结果
query = parser.parse("软件");
//查找name域中有java的结果
query = parser.parse("name:java");
//使用通配符
query = parser.parse("name: j*");//默认*号不能出现在最前端, 会影响效率, 使用parser.setAllowLeadingWildcard(true)打开
query = parser.parse("lu*n?");//只能在单个分词中使用通配符, 即 使用 “lucene*action”就匹配不到
query = parser.parse("lucene test");//默认lucene和action是或关系
query = parser.parse("lucene OR test");//同上, OR必须大写
query = parser.parse("lucene AND test");//与关系
query = parser.parse("- lucene + test");//存在test但不存在lucene
//query = parser.parse("size:[100 TO 200]");//这个query是TermRangeQuery所以不能用于数字(日期)范围查询
query = parser.parse("name:[java TO java]");//查找有a-z字母的 {}不包含
//数字范围查询需要重写QueryParser的getRangeQuery方法
query = parser.parse("date:[1334550379955 TO 1334550379955]");
query = parser.parse("\"lucene action\"~1");//1即phraseQuery中的slop=1
query = parser.parse("name:xava~0.74");//加上~代表模糊查询, 要和上面的额短语查询相区别开来,另外~后面可以加一个浮点数去顶相似度
//查询大小在145到150, 名称与javv相似, 创建时间在1334550379955之前的 不要, lucene与action相距1
query = parser.parse("size:[145 TO 150] + name:javv~ - date:[1 TO 1334550379954] + \"lucene action\"~1");
对查询项进行加权:可以通过在查询项加上^factor对某个查询项进行加权,比如"title^2.0 junit" 对title的查询加权为2.0,而junit还是默认1.0
发表评论
-
对字符串进行验证之前先进行规范化
2013-09-17 23:18 13887对字符串进行验证之前先进行规范化 应用系统中经常对字 ... -
使用telnet连接到基于spring的应用上执行容器中的bean的任意方法
2013-08-08 09:17 1433使用telnet连接到基于spring的应用上执行容器中 ... -
jdk7和8的一些新特性介绍
2013-07-06 16:07 10070更多ppt内容请查看:htt ... -
Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
2013-06-28 21:35 11733原文链接: http://www.javaarch.net ... -
java对于接口和抽象类的代理实现,不需要有具体实现类
2013-06-12 09:50 2907原文链接:http://www.javaarch.net/j ... -
Excel2007格式分析和XML解析
2013-06-07 09:56 10612在物料清单采购中,用到excel上传文件解析功能,不 ... -
Java EE 7中对WebSocket 1.0的支持
2013-06-05 09:27 3799原文链接:http://www.javaarch.n ... -
java QRCode生成示例
2013-06-05 09:26 1468原文链接:http://www.javaarch.n ... -
Spring Security Logout
2013-06-03 00:05 2322原文地址:http://www.javaarch.net/ ... -
Spring Security Basic Authentication
2013-06-03 00:04 1699原文地址:http://www.javaarch.net/ ... -
Spring Security Form Login
2013-06-02 16:16 2113原文地址:http://www.javaarch.net/j ... -
spring3 的restful API RequestMapping介绍
2013-06-02 14:53 1119原文链接:http://www.javaarch.net/j ... -
Java Web使用swfobject调用flex图表
2013-05-28 19:05 1079Java Web使用swfobject调用 ... -
spring使用PropertyPlaceholderConfigurer扩展来满足不同环境的参数配置
2013-05-21 15:57 3289spring使用PropertyPlaceholderCon ... -
java国际化
2013-05-20 20:57 4438java国际化 本文来自:http://www.j ... -
RSS feeds with Java
2013-05-20 20:52 1184RSS feeds with Java 原文来自:htt ... -
使用ibatis将数据库从oracle迁移到mysql的几个修改点
2013-04-29 10:40 1635我们项目在公司的大战略下需要从oracle ... -
线上机器jvm dump分析脚本
2013-04-19 10:48 2863#!/bin/sh DUMP_PIDS=`p ... -
spring3学习入门示例工程
2013-04-18 09:28 10901. github地址 https://github ... -
spring map使用annotation泛型注入问题分析
2013-04-15 13:30 8504今天在整一个spring的ioc学习demo,碰到 ...
相关推荐
lucene-3.6.0.zip
开源项目lucene-3.6.0 官网上下下来的源码
lucene-core-3.6.0-sources 绝对可用
lucene-3.6.0 api 手册, 最新的 , lucene 是个好东东, 一直在用, 之前还在使用3.1的,发现已经到3.6了, 落后啊
lucene-core-3.6.0.jar,很好,很实用的一个包
IKAnalyzer所有的Jar包以及lucene3.6.0和lucene5.0.0相关的jar包,IKAnalyzer2012兼容lucene3.6.0,IKAnalyzer兼容lucene有限
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
lucene-highlighter-3.6.0-sources
详细说明:mmseg 1.8.5的测试分词项目包 和lucene 3.6.0 相配合使用-corresponding test points words mmseg project package and lucene 3.6.0
IKAnalyzer2012_u6和lucene-core-3.6.0两个jar包,互相兼容。ik分词的使用方法可以转https://blog.csdn.net/fr961951149/article/details/98736002。
lucene3.6.1 所需jar整合包里面包括 lucene-highlighter-3.6.1.jar lucene-core-3.6.0.jar lucene-analyzers-3.6.1.jar IKAnalyzer2012_u6.jar
如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了部分以前版本的BUG。下面列出几个常用到的包:lucene-core-3.6.2.jar、lucene-memory-3.6.2.jar、lucene-highlighter-3.6.2.jar、lucene-analyzers-...
3.6.2版本是lucene的3x中最大的版本,也是3...如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了部分以前版本的BUG。想下载源码包的,可以搜索源码包lucene-core-3.6.2-src.jar及lucene-queries-3.6.2.jar
3.6.2版本是lucene的3x中最大的版本,也是3x中最稳定的版本,...如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了以前版本BUG。还可搜索lucene-queries-3.6.2.jar及其源码包lucene-queries-3.6.2-src.jar
3.6.2版本是lucene的3x中最大的版本,也是3x中最稳定的版本,因此建设使用该版本。如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了部分以前版本的BUG。高级搜索jar包
高级搜索源码包,还可搜索lucene-queries-3.6.2.jar及lucene-core-3.6.2.jar。3.6.2版本是lucene的3x中最大的版本,也是3x中最稳定...如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了前两个版本的bug。
修复IKAnalyzer2012存在的无法添加扩展的中文停用词的bug。详见:http://blog.csdn.net/kmguo/article/details/8779522
IKAnalyzer2012+lucene-core-3.6.0中文分词,由于兼容性问题,自己只调试通了这俩包
IKAnalyzer2012(Java分词工具)...网上示例用的是lucene-core-3.6.0.jar,用lucene-core-5.5.4.jar也可以。 本资源包含: IKAnalyzer2012_FF_hf1.jar IKAnalyzer.cfg.xml ext.dic stopword.dic lucene-core-5.5.4.jar
内含:commons-collections4-4.1.jar、commons-logging-1.2.jar、freemarker.jar、IKAnalyzer2012.jar、lucene-core-3.6.0.jar、poi-3.16.jar、poi-ooxml-3.16.jar、poi-scratchpad-3.16.jar、xmlbeans-2.6.0.jar