05 2010 档案

摘要: Lucene学习总结之九:Lucene的查询对象(1)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738803.htmlLucene学习总结之九:Lucene的查询对象(2)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738804.htmlLucene学习总结之九:Lucene的查询对象(3)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738805.html---------------阅读全文
posted @ 2010-05-19 02:35 刘超觉先 阅读(4089) | 评论 (1) 编辑
摘要: Lucene除了支持查询语法以外,还可以自己构造查询对象进行搜索。 从上一节的Lucene的语法一章可以知道,能与查询语句对应的查询对象有:BooleanQuery,FuzzyQuery,MatchAllDocsQuery,MultiTermQuery,MultiPhraseQuery,PhraseQuery,PrefixQuery,TermRangeQuery,TermQuery,WildcardQuery。 Lucene还支持一些查询对象并没有查询语句与之对应,但是能够实现相对高级的功能,本节主要讨论这些高级的查询对象。 它们中间最主要的一些层次结构如下,我们将一一解析。 Query B.阅读全文
posted @ 2010-05-19 02:29 刘超觉先 阅读(8703) | 评论 (4) 编辑
摘要: 5、SpanQuery 所谓SpanQuery也即在查询过程中需要考虑进Term的位置信息的查询对象。 SpanQuery中最基本的是SpanTermQuery,其只包含一个Term,与TermQuery所不同的是,其提供一个函数来得到位置信息: public Spans getSpans(final IndexReader reader) throws IOException { return new TermSpans(reader.termPositions(term), term); } Spans有以下方法: next() 得到下一篇文档号,不同的SpanQuery此方...阅读全文
posted @ 2010-05-19 02:29 刘超觉先 阅读(2677) | 评论 (0) 编辑
摘要: 6、FilteredQuery FilteredQuery包含两个成员变量: Query query:查询对象 Filter filter:其有一个函数DocIdSet getDocIdSet(IndexReader reader) 得到一个文档号集合,结果文档必须出自此文档集合,注此处的过滤器所包含的文档号并不是要过滤掉的文档号,而是过滤后需要的文档号。 FilterQuery所得到的结果集同两者取AND查询相同,只不过打分的时候,FilterQuery只考虑query的部分,不考虑filter的部分。 Filter包含很多种如下: 6.1、TermsFilter 其包含一个成员变量...阅读全文
posted @ 2010-05-19 02:29 刘超觉先 阅读(5578) | 评论 (0) 编辑
摘要: 为什么会产生这个异常: 使用Lucene检索过程中如果用到RangeQuery,PrefixQuery,WildcardQuery,FuzzyQuery这四种Query,可能会产生TooManyClauses异常。为什么会产生这个异常呢?举例说明: 以RangeQuery为例,如果日期范围为19990101到20091231,在索引文件中有19990102,19990103等等这些日期词组,那么RangeQuery会被扩展成“19990102 OR 19990103”,成了2个子句。可以想象,如果索引文件里面在这个时间段内的日期有很多,那么就会产生很多子句。 PrefixQuery等也是同样的阅读全文
posted @ 2010-05-16 00:29 刘超觉先 阅读(1595) | 评论 (2) 编辑
摘要: 经常需要Kill多个进程,这些进程包含共同的关键字,可以用一条命令Kill掉它们。 ps aux | grep "common" | cut –c 9-15 | xargs kill –9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令: "ps aux" 查看所有进程的命令。这时检索出的进程将作为下一条命令grep "common"的输入。 "grep "common" 选出所有含有关键字"common"的进程。 &q阅读全文
posted @ 2010-05-16 00:18 刘超觉先 阅读(6396) | 评论 (0) 编辑
摘要: 三、解析QueryParser.jj3.1、声明QueryParser类在QueryParser.jj文件中,PARSER_BEGIN(QueryParser)和PARSER_END(QueryParser)之间,定义了QueryParser类。其中最重要的一个函数是public Query parse(String query)函数,也即我们解析Lucene查询语法的时候调用的函数。这是一个纯Java代码定义的函数,会直接拷贝到QueryParser.java文件中。parse函数中,最重要的一行代码是调用Query res = TopLevelQuery(field),而TopLevelQ阅读全文
posted @ 2010-05-08 00:21 刘超觉先 阅读(6737) | 评论 (0) 编辑
摘要: 一、Lucene的查询语法Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html(1) 语法关键字+ - && || ! ( ) { } [ ] ^ " ~ * ? : \如果所要查询的查询词中本身包含关键字,则需要用\进行转义(2) 查询词(Term)Lucene支持两种查询词,一种是单一查询词,如"hello",一种是词组(phrase),如"hello world"。(3) 查询域(Field)在查询语句中,可以指定从哪个域中寻找阅读全文
posted @ 2010-05-08 00:20 刘超觉先 阅读(11900) | 评论 (1) 编辑
摘要: 信息检索这个词的含义非常广。仅从钱包中取出信用卡,然后输入信用卡号也属于信息检索的范畴。然而,从学术角度来讲,信息检索定义如下: 信息检索即从大量非结构化文档集中找到满足需要的文档的过程。 按照如上定义,信息检索曾经是仅少数人如图书管理员,律师,专业搜索者参与的活动。而今非昔比,当今成千上万的人每天都会用搜索引擎搜索网页和邮件。信息检索正迅速取代传统的数据库搜索的方式,成为信息获取的主要方式。除此之外,信息检索技术还可以解决其他有关数据和信息的问题。所谓非结构化数据,指的是没有清晰的可被计算机理解的语义结构的数据。与之相对的是结构化数据,例如传统的关系型数据库,被很多公司用来保存产品库存及员工阅读全文
posted @ 2010-05-01 20:57 刘超觉先 阅读(2968) | 评论 (0) 编辑