上文讲到对索引的管理,增删查改。今晚就讲讲,为索引域添加"权"了,有时在搜索的时候,会根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面。
为索引域添加权是再创建索引之前,把索引域的权值设置好,这样,在进行搜索时,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是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
在IT领域,Lucene是一个非常著名的全文搜索引擎库,由Apache软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够轻松地在应用程序中实现全文检索功能。在"lucene4.3 按坐标距离排序"这个主题中...
1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。 输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。 可访问 http://www.xunta.so立即体验...
Lucene是由Apache软件基金会提供的一个开源的全文搜索引擎库,它为用户提供了一组用Java编写的索引和搜索程序库。它具备高性能、可扩展性强的特点,可以用来构建各种搜索引擎应用。Lucene使用倒排索引,能够快速准确...
总的来说,基于Lucene的中型搜索引擎(C#)结合了开源的全文检索库和C#语言的优势,为企业或个人开发自定义搜索引擎提供了一种高效且灵活的解决方案。通过深入理解Lucene的原理和ShootSearch的优化策略,开发者可以...
lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了一个简单的API来索引和搜索大量文本数据。Heritrix,另一方面,是一个开源的互联网档案爬虫,能够系统地抓取网页并保存为离线资源,以便于后续...
本项目“基于Lucene的桌面搜索引擎”正是针对这一需求,利用开源全文搜索引擎库Lucene实现了一个桌面级别的搜索解决方案。 **一、Lucene简介** Lucene是Apache软件基金会的一个开放源代码项目,它是Java语言编写的...
全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。
LUCENE是一款开源的Java库,它为开发者提供了构建搜索引擎所需的核心功能,包括索引创建、文本分析、查询解析以及结果排序等。 一、LUCENE基础知识 LUCENE的核心概念主要包括文档(Document)、字段(Field)、...
Lucene和Nutch是两个在开源社区广泛使用的搜索引擎技术,它们为开发者提供了构建高效、可扩展的搜索解决方案。本篇将围绕“Lucene+Nutch搜索引擎开发”这一主题,深入探讨王学松源代码,帮助读者理解并掌握这两项...
《基于Lucene的全文搜索引擎设计》 全文搜索引擎是现代网络信息检索的重要工具,它通过自动化的方式,高效地从海量的Web数据中检索出用户需要的信息。本设计主要围绕基于JavaWeb平台,使用Lucene框架构建的全文搜索...
Lucene是Apache软件基金会的一个高性能、全文本搜索库,它为开发人员提供了强大的文本搜索功能,使得构建自己的搜索引擎成为可能。 首先,我们需要了解Lucene的基本概念。Lucene的核心组成部分包括索引和查询。索引...
Apache Lucene是一个高性能、全文本搜索库,它提供了一个简单的API来创建、维护和搜索索引。在这个项目中,Lucene被用来对处理后的数据建立索引。索引过程包括分词、建立倒排索引等步骤。分词是将文本拆分成关键词的...
在"Lucene全文搜索_LuceneJava全文搜索_"这个主题中,我们将深入探讨Lucene如何在Java环境中实现高效的全文搜索引擎。首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。...
- **搜索索引**: 用户在index.jsp输入查询后,请求会被发送到服务器,Lucene会解析查询并匹配索引中的词元。 - **返回结果**: 匹配的文档按照相关性排序,results.jsp则显示这些结果,通常包括文档标题、摘要等...