本论文是一篇数据库方面有关论文答辩开场白,关于Lucene的查询技术相关硕士学位毕业论文范文。免费优秀的关于数据库及信息检索及参考文献方面论文范文资料,适合数据库论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
摘 要:Lucene是一个强大的全文索引引擎工具包,它的全文检索技术是信息检索领域广泛使用的基本技术,具有访问索引时间快、多用户访问、跨平台使用的特点.该文着重分析了Lucene的查询模型,研究了Lucene的查询方式,并提出了Lucene查询优化的方法.
该文url http://www.sxsky.net/benkelunwen/060347777.html
关 键 词:查询模型;查询评分方式;查询过程;查询优化方式
中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)11-2524-02
Lucene的检索算法属于索引检索,即用空间来换取时间,主要适用于文档集的全文检索,以及海量数据库的模糊检索.搜索就是查找一条索引里的单词出现的文档的过程.一个搜索的质量是用精度和回调法来描述的.回调测量搜索系统查找相关的文档的质量,然而精度测量系统过滤出不相关文档的质量,但是在思考搜索的时候必须考虑许多其他因素.Lucene已经提及速度和快速搜索大量文本的能力.支持单个的和多个词汇的查询,短语查询,通配符,结果分级,以及排序功能.Lucene的强大的软件库提供许多查询特性.
1Lucene查询模型(LuceneQueryingModel)
查询模型是一个四元组[D,Q,F,R(qi,dj)],D为文档集的机内表示,Q为用户需求的机内表示,F为文档表示、查询表示和它们之间的关系的模型框架(Frame),R(qi,dj)给queryqi和documentdj评分
1.1向量模型
向量空间模型将文档映射为一个特征向量V(d)等于(t1,w1(d),等,tn,wn(d)),其中ti(i等于1,2,等n)为一列互不相同的词条项,wi(d)为ti在d中的权值,一般被定义为ti在d中出现频率tfi(d)的函数.向量模型的优点在于,术语权重的算法提高了检索的性能;部分匹配的策略使得检索的结果文档集更接近用户的检索需求;根据结果文档对于查询串的相关度并通过公式对结果文档进行排序[1-2].
Lucene把索引中的每个词作为空间的一个维度;把每一篇文档作为空间中的一个向量;把每一个查询也作为空间中的一个向量;通过计算文档和查询的内积或余弦等来表示文档和查询的相关程度.
1.2布尔模型
BooleanQuery是一种复合式的Query支持多种不同Query的逻辑组合,可以对不同的query赋予不同的boost值表示该query在整个BooleanQuery中的重要程度.
qerynorm等于boost/sqrt(∑iidfi*idfi*boosti*boosti)
计算每个查询的Term和匹配文档的分值:
Weight等于queryWeight*fieldWeight,
queryWeight等于boost*idf*querynorm,
fieldWeight等于tf*idf*fieldnorm,
每篇匹配文档计算总得分:
score等于coord*(∑iweighti);coord等于匹配词项数/总词项数;
qerynorm为一个修正因子,用来使不同查询间的分数更可比较.
boost为该query被赋予的权值.
tf为该query中的term在某文档中出现的次数.
idf为lg(N/df),其中N为文档总数,df为含term的文档数量.
2Lucene查询过程(LuceneQueryingProcess)
2.1查询过程概述
Lucene的搜索采用二元搜索算法快速定位关 键 词,这是由于Lucene倒排索引关 键 词是按字母字符顺序排列的.找到相应关 键 词后,通过指向频率文件的指针读出所有的文档号,然后对所得文档进行评分(Lucene的评分机制基于向量空间模型),最终把相关度高的前100个查询结果以文档引用的方式存储在Hits对象中,这些得分较高的文档基本可以满足用户对查询信息的要求[4].
2.2项、域查询
一条搜索语句被拆分为一些项(term)和操作符(operator).项有两种类型:单独项和短语.单独项就是一个单独的单词,例如"test","hello".短语是一组被双引号包围的单词,例如"helloworld".多个项可以用布尔操作符连接起来形成复杂的查询语句.
Lucene支持域.指定在某一个域中搜索,或者就使用默认域.域名及默认域是由具体索引器来决定的.
以QueryParser为例,代码如下:
Hitshits等于null,
try
{
//contents为检索字段,key为检索词
QueryParserqueryparser等于newQueryParser("contents",newStandardAnalyzer()),
Queryquery等于queryparser.Parse(key),
hits等于searcher.Search(query),
等
}
等
2.3修饰符查询
Lucene支持单个与多个字符的通配搜索.使用符号""表示单个任意字符的通配.使用符号"*"表示多个任意字符的通配.单个任意字符匹配的是所有可能单个字符.多个任意字符匹配的是0个及更多个可能字符.可