- 浏览: 200490 次
文章分类
最新评论
-
code_xiaoke:
session可是有30分钟有效期的还有如果在分布式的环境下 ...
Java Web 用户登陆示例代码 -
xul0038:
http://www.baidu.com
Java Web 用户登陆示例代码 -
16866:
非常棒,配置信息呢
Nginx负载均衡 -
开发小菜:
什么意思,没明白?能不能写一个例子
JS 实现DIV随浏览器窗口大小变化
Lucene的搜索结果默认按相关度排序,这个相关度排序是基于内部的Score和DocID,Score又基于关键词的内部评分和做索引时的boost。默认Score高的排前面,如果Score一样,再按索引顺序,先索引的排前面。那么有人问了,如果我要先索引的排后面怎么办呢?隐士研究了源码后发现这是相当简单的事情。以下代码基于Lucene 2.0。
看Sort的默认构造函数,相关度就是SortField.FIELD_SCORE和SortField.FIELD_DOC的组合。
java 代码
/**
* Sorts by computed relevance. This is the same sort criteria as calling
* {@link Searcher#search(Query) Searcher#search()}without a sort criteria,
* only with slightly more overhead.
*/
public Sort() {
this(new SortField[] { SortField.FIELD_SCORE, SortField.FIELD_DOC });
}
那么该如何构造我们需要的SortField呢?请看SortField的一个构造函数,有一个参数reverse可供我们调整结果集的顺序。
java 代码
/** Creates a sort, possibly in reverse, by terms in the given field with the
* type of term values explicitly given.
* @param field Name of field to sort by. Can be <code>null</code> if
* <code>type</code> is SCORE or DOC.
* @param type Type of values in the terms.
* @param reverse True if natural order should be reversed.
*/
public SortField (String field, int type, boolean reverse) {
this.field = (field != null) ? field.intern() : field;
this.type = type;
this.reverse = reverse;
}
由此可见,只要构造一个SortField[]就可以实现我们要的功能,请看:
java 代码
// 评分降序,评分一样时后索引的排前面
new SortField[] { SortField.FIELD_SCORE, new SortField(null, SortField.DOC, true) }
// 评分升序,评分一样时后索引的排前面,呵呵,此为最不相关的排前面,挺有趣的
new SortField[] { new SortField(null, SortField.SCORE, true), new SortField(null, SortField.DOC, true) }
呵呵,只要将此SortField[]作为参数传入Sort的构造函数得到Sort的一个instance,将此instance传入searcher.search(query, sort)即可得到了期望的结果。
来源:中国自学编程网
看Sort的默认构造函数,相关度就是SortField.FIELD_SCORE和SortField.FIELD_DOC的组合。
java 代码
/**
* Sorts by computed relevance. This is the same sort criteria as calling
* {@link Searcher#search(Query) Searcher#search()}without a sort criteria,
* only with slightly more overhead.
*/
public Sort() {
this(new SortField[] { SortField.FIELD_SCORE, SortField.FIELD_DOC });
}
那么该如何构造我们需要的SortField呢?请看SortField的一个构造函数,有一个参数reverse可供我们调整结果集的顺序。
java 代码
/** Creates a sort, possibly in reverse, by terms in the given field with the
* type of term values explicitly given.
* @param field Name of field to sort by. Can be <code>null</code> if
* <code>type</code> is SCORE or DOC.
* @param type Type of values in the terms.
* @param reverse True if natural order should be reversed.
*/
public SortField (String field, int type, boolean reverse) {
this.field = (field != null) ? field.intern() : field;
this.type = type;
this.reverse = reverse;
}
由此可见,只要构造一个SortField[]就可以实现我们要的功能,请看:
java 代码
// 评分降序,评分一样时后索引的排前面
new SortField[] { SortField.FIELD_SCORE, new SortField(null, SortField.DOC, true) }
// 评分升序,评分一样时后索引的排前面,呵呵,此为最不相关的排前面,挺有趣的
new SortField[] { new SortField(null, SortField.SCORE, true), new SortField(null, SortField.DOC, true) }
呵呵,只要将此SortField[]作为参数传入Sort的构造函数得到Sort的一个instance,将此instance传入searcher.search(query, sort)即可得到了期望的结果。
来源:中国自学编程网
发表评论
-
java实现动态切换上网IP (ADSL拨号上网) java开发
2013-04-24 10:06 1302动态切换IP的实现主是也由Windows的rasdial命令提 ... -
JAVA字符串处理函数
2013-04-12 09:21 1151Java中的字符串也是一连串的字符。但是与许多其他的计算机语 ... -
(转)Lucene打分规则与Similarity模块详解
2013-02-06 14:08 1210搜索排序结果的控制 Lu ... -
Compass将lucene、Spring、Hibernate三者结合
2013-02-01 11:02 1679版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Lucene3.0详解
2013-02-01 10:57 1418★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 58117实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6799Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
Lucene为不同字段指定不同分词器(转)
2013-01-31 17:34 3475在lucene使用过程中,如 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1723一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1863编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 1036如今,各种互联网的Web ... -
MVC框架的映射和解耦
2013-01-25 21:37 835最近在写一个业务上用到的框架,回想起接触过的一些MVC框架, ... -
JAVA发送EMAIL的例子
2013-07-09 09:44 907import javax.mail.*; ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-11-19 09:55 1387前两天看到了一个中国新闻网,这个网站的搜索form的actio ... -
Lucene多字段搜索
2012-11-19 09:53 1042最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题, ... -
lucene之sort
2012-11-16 15:06 1095package cn.zqh.lucene.sort; im ... -
Nginx负载均衡
2012-11-16 11:45 7669最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大. ... -
HashSet重复元素判断
2012-10-15 16:37 9142HashSet不能添加重复的元素,当调用add(Object) ... -
JAVA提高教程(2)-认识Set集合之HashSet
2012-10-09 09:44 975集合在Java里面的作用非 ... -
使用solr搭建你的全文检索
2012-09-28 16:34 1066Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ...
相关推荐
Lucene 排序算法是搜索引擎中的核心组件之一,负责将搜索结果按照相关度排序以便用户快速找到所需信息。 Lucene 的排序算法主要基于 tf-idf 模型,以下是 Lucene 排序算法的详细介绍: 1. tf(Term Frequency):...
首先,Lucene的核心功能之一就是提供高效的全文检索能力,但默认的搜索结果排序通常是基于相关度得分(Relevance Score),这是由TF-IDF算法计算得出的。然而,在实际应用中,我们往往需要根据其他因素(如时间、...
- **排序**:通过调整查询参数,可以基于文档的相关度、发布日期或其他自定义字段对结果进行排序。 - **分页**:为了提高用户体验,搜索引擎通常会限制每次返回的结果数量,实现分页展示,如每页10条记录。 - **...
"luceneDemo(完整代码)"是一个实践项目,旨在帮助开发者深入理解Lucene的基础类运用、高亮器实现以及相关度排序等核心概念。 首先,我们来看看基础类的运用。在Lucene中,IndexWriter是创建和更新索引的主要类,...
首先,Lucene的默认排序方式是基于文档得分,即通过TF-IDF(词频-逆文档频率)算法来评估文档与查询的相关度。TF(t in d)表示词条t在文档d中的出现次数,IDF(t)衡量的是词条t在整个文档集合中的稀有程度。同时,...
2. 相关度排序:Lucene 使用相关度排序公式对搜索结果进行排序。 3. VSM 和 BM25:VSM(Vector Space Model)和 BM25 是两种常用的相关度排序算法。 4. Lucene 优化:Lucene 优化是指对 Lucene 的配置和参数进行调整...
因此,可能需要结合医学知识图谱,引入相关度更高的排序因子,如疾病的相关性、症状的严重程度等。此外,还可以考虑时间因素,将最新的研究成果优先展示。 再者,个性化搜索也是优化的关键点。用户的行为、地理位置...
Lucene是一个开源的Java库,其核心功能包括文档索引、搜索、排序以及相关的文本分析工具。它的主要任务是创建索引,将非结构化的文本数据转换成可以快速查询的结构化形式。Lucene支持多种数据源,如文件系统、数据库...
除了基本的搜索功能,Lucene.net还提供了如高亮显示搜索结果、地理位置搜索、评分排序等功能。开发者可以根据需求通过扩展Lucene.net的功能来满足特定场景的应用。 **七、实战案例** 学习文档中可能包含了一些实际...
全文检索与数据库中的LIKE关键字查询不同,LIKE虽然能进行模糊匹配,但其结果可能不准确,没有相关度排序,且效率较低。 【Lucene简介】 Lucene是一个由Java编写的高性能、可扩展的全文搜索引擎库。它提供了一种...
2. **排序与评分(Sorting & Scoring)**: Lucene 支持基于相关性的排序,通过 TF-IDF(Term Frequency-Inverse Document Frequency)等算法计算文档的相关度。 3. **多字段搜索(Multi-Field Searching)**: 用户...
同时,可以提供方法来计算相关度、过滤重复结果等。 ### 3. Lucene性能优化 #### 3.1 分片与分布式 在大数据量场景下,可以采用分片策略,将索引分散到多个节点上,利用Lucene的分布式搜索能力,提高查询效率。 ...
7. **搜索相关度评分(Score)**:Lucene为每个匹配查询的文档计算一个分数,表示其与查询的相似度。分数的计算涉及多个因素,包括词频(tf)、逆文档频率(idf)、激励因子(boost)和长度规范(lengthNorm)。高...
Lucene允许根据多种因素对搜索结果进行排序,如相关度、时间戳等。此外,用户可以通过点击反馈调整搜索结果,Lucene支持对这些反馈信息进行学习,以改进未来的查询结果。 综上所述,Lucene是处理大数据量文本检索的...
6. **优化性能**:为了提高性能,Lucene提供了`SecondPassGroupingCollector`,它允许在第二轮搜索中仅检索每个组的最相关文档,而不是所有文档。这对于大型数据集特别有用,因为它减少了I/O操作。 7. **注意内存...
`TopDocs` 结果包含了匹配文档的评分和排序信息,`ScoreDoc` 描述了每个匹配文档的相关度。 6. **评分与相关性**:Lucene 4.0.0 引入了 BM25 相关性算法,这是一种改进的 TF-IDF 模型,能够更好地处理文档长度不...
- **评分(Scoring)**:Lucene根据查询与文档的相关度计算得分,用于排序搜索结果。 2. **Web集成**: - **Servlet/Filter**:在Web应用中,可以使用Servlet或Filter来接收用户请求,调用Lucene进行查询,然后...
- **排序**:全文检索结果按相关度排序,数据库搜索通常无排序。 - **速度**:全文检索速度快,通常在毫秒级别,而数据库搜索可能较慢。 4. **全文检索工作流程与倒排索引** - **信息采集与加工**:信息从源头...
Lucene的搜索结果排序基于相关度评分,该评分基于查询项在文档中的出现频率、位置等因素。提供的代码示例可以帮助理解如何进行搜索操作和处理结果。 此外,公用类和配置文件是实际开发中不可或缺的部分。公用类通常...