上文讲到对索引的管理,增删查改。今晚就讲讲,为索引域添加"权"了,有时在搜索的时候,会根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面。
为索引域添加权是再创建索引之前,把索引域的权值设置好,这样,在进行搜索时,lucene会对文档进行评分,这个评分机制是跟权值有关的,而且其它情况相同时,权值跟评分是成正相关的。
private String[] ids={"1","2","3","4","5","6"}; private String[] emails={"sam@163.com","holiday@163.com","issac@163.com","summer@qq.com","coco@sina.cn","roy@gmail.com"}; private String[] contents={"hello,how are you,@163.com,p,lucene,lucene","hi,I am fine!,@163.com,p,lucene","what is your name,@163.com,p,lucene","my name is summer,@qq.com,p,lucene,lucene","what is your number,@sina.cn,p,lucene,lucene","I will tell you,just wait a minute,@gmail.com,p,lucene"}; private String [] names={"sam","holiday","issac","summer","coco","roy"}; private int[] attachs={2,3,2,4,5,7}; private Directory directory=null; private Map<String,Float> powerScores=new HashMap<String,Float>(); public IndexUtil() throws IOException { powerScores.put("@163.com", 2.0f); powerScores.put("@qq.com", 1.5f); directory=FSDirectory.open(new File("E:/lucene/index02")); } /** * 建立索引 * @throws IOException */ public void index() throws IOException { IndexWriter indexWriter=new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_43,new StandardAnalyzer(Version.LUCENE_43))); for(int i=0;i<ids.length;i++) { Document document=new Document(); Field contentField=new Field("content",contents[i],Field.Store.NO,Field.Index.ANALYZED); document.add(new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)); document.add(new Field("email",emails[i],Field.Store.YES,Field.Index.NOT_ANALYZED)); document.add(new Field("name",names[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)); document.add(contentField); String contentPower=contents[i].substring(contents[i].lastIndexOf("@"),contents[i].lastIndexOf("p")-1); System.out.println(contentPower); if(powerScores.containsKey(contentPower)) { //为索引域添加权,例如,这里的例子是,如果这个域有包含@163.com的就为2.0,如果为@qq.com的就为1.5,如果为其它的就为0.5,默认值是1.0 //3.5版本有个为文档添加权的,但是现在4.3版本已经没有了 contentField.setBoost(powerScores.get(contentPower)); } else { contentField.setBoost(0.5f); } indexWriter.addDocument(document); } if(indexWriter!=null) indexWriter.close(); }
其实上面的代码跟上一篇索引的增删查改的代码几乎一样,笔者是在原有代码的基础上,加上一些对某个索引域权值的设置。至于测试的例子还是一样的,但是测试的结果会截然不同,笔者这里就不贴出测试结果了。
ps(纯属吐槽):因为博主白天还要上课,所以只能每天晚上抽出一点时间来弄这些文章了,之前因为有项目要做,连发文章的时间都被占有了,希望在这段时间能把这些文章快点弄好。好了,又差不多一点了,又是睡觉的节奏了,明天早上满课啊,惨啊!!
相关推荐
基于Lucene的全文搜索引擎研究与应用.pdf 详实的介绍Lucene的架构设计分析
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。 输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。 可访问 http://www.xunta.so立即体验...
lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。
全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。
lucene4.3 按坐标距离排序,里面写了个简单的例子。运行就行
lucene_heritrix 搜索引擎 很好的东西来看看吧
基于java的Lucene全文搜索引擎资源简单实例下载
毕业设计:基于lucene的桌面搜索引擎
基于Lucene的全文搜索引擎设计.doc
完整的《Lucene+nutch搜索引擎开发》PDF版一共83.6M,无奈我上传的最高限是80M,所以切成两个。这一个是主文件,还需要下载一个副文件Lucene+nutch搜索引擎开发.z01。解压时直接放到一起,解压这个主文件就行了。
《信息检索》课程大作业3:基于Lucene的全文搜索引擎
基于Lucene的全文搜索引擎设计毕业设计.doc
基于XML和Lucene构建黄页搜索引擎,姜伟,宋茂强,随着用户对搜索引擎要求的不断提高,垂直搜索引擎应运而生,成为搜索引擎新的发展趋势。论文基于开源全文索引引擎工具包Lucene,采
基于Lucene的全文检索引擎研究与应用
Lucene nutch 搜索引擎开发 Part1
lucene4.3源代码 censed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information ...
基于Lucene的搜索引擎的研究与应用基于Lucene的搜索引擎的研究与应用
本系统是基于lucene框架开发的全文搜索引擎,能实现txt、doc、pdf、excel、ppt等常见文档的全文检索,可以直接部署到tomcat下即可运行,需要研究lucene或实际应用lucene框架的朋友,欢迎下载。