- 浏览: 150641 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (69)
- Maven (1)
- lucene (22)
- bobo zoie (6)
- eclipse (5)
- Nexus (1)
- Git (1)
- trac (1)
- RMI (2)
- svn (0)
- Protocol buffer (0)
- sensei (6)
- JMX (2)
- Faceted search (1)
- Linux (1)
- Cassandra (1)
- Zookeeper (3)
- zoie (1)
- jmap (1)
- mongodb (2)
- 百度百科 (2)
- 词库 (2)
- 抓取 (2)
- IndexTank (1)
- LinkedIn (4)
- norbert (3)
- 分布式 (2)
- senseidb (2)
- Thrift (1)
- scala (1)
- 搜索引擎 (1)
- 质量 (1)
- Nosql (1)
- Jaccard (1)
- Mahout (1)
最新评论
-
bluky999:
@Mark
怎样量化评价搜索引擎的结果质量 -
baso4233:
非常感谢,我跑通了。途中出现了,java.lang.Unsup ...
norbert 高并发分布式服务例子 examples (二) -
yangsong158:
rabbit9898 写道xiansuanla 写道我运行 m ...
JMX 入门例子 -
rabbit9898:
xiansuanla 写道我运行 main方法以后 cmd 里 ...
JMX 入门例子 -
xiansuanla:
我运行 main方法以后 cmd 里面运行 jconsole ...
JMX 入门例子
注意:
在lucene2.9中,排序的字段域必须indexed但是不能tokenized。因为虽然tokenized后虽然可以排序,但是有可能不是你想要的结果,因为tokenized可能会去除停用词或者大小写转换等。
(in Lucene 2.9 and when reading java doc for the Sort class I noticed
it says "The field must be indexed, but should not be tokenized".
Sorting on tokenized fields can work, but may not necessarily do what
you expect, depending on your requirements and how the field is
tokenized. )
Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。
下面研究几种设置/改变检索结果排序的方法。
1、改变Document的boost(激励因子)
改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。
2、改变Field的boost(激励因子)
改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。
3、使用Sort排序工具实现排序
Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。
调用sort进行排序的方法是IndexSearcher.search,例如:
IndexSearcher.search(query,sort);
关于Sort类,在其内部定义了6种构造方法:
public Sort() //
public Sort(SortField field) //通过构造某个域(field)的SortField对象根据一个域进行排序
public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序
public Sort(String field) //根据某个域(field)的名称构造Sort进行排序
public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序
public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序
4、直接使用SortField实现排序
关于SortField类,在其内部定义了7种构造方法:
public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序
public SortField (String field, int type)
public SortField (String field, int type, boolean reverse)
public SortField (String field, Locale locale)
public SortField (String field, Locale locale, boolean reverse)
public SortField (String field, SortComparatorSource comparator)
public SortField (String field, SortComparatorSource comparator, boolean reverse)
type对应的值分别为:
SortField. SCORE 按积分排序
SortField. DOC 按文档排序
SortField. AUTO 域的值为int、long、float都有效
SortField.STRING 域按STRING排序
SortField..FLOAT
SortField.LONG
SortField.DOUBLE
SortField.SHORT
SortField.CUSTOM 通过比较器排序
SortField.BYTE
5、自定义排序
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧
在lucene2.9中,排序的字段域必须indexed但是不能tokenized。因为虽然tokenized后虽然可以排序,但是有可能不是你想要的结果,因为tokenized可能会去除停用词或者大小写转换等。
(in Lucene 2.9 and when reading java doc for the Sort class I noticed
it says "The field must be indexed, but should not be tokenized".
Sorting on tokenized fields can work, but may not necessarily do what
you expect, depending on your requirements and how the field is
tokenized. )
Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。
下面研究几种设置/改变检索结果排序的方法。
1、改变Document的boost(激励因子)
改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。
2、改变Field的boost(激励因子)
改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。
3、使用Sort排序工具实现排序
Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。
调用sort进行排序的方法是IndexSearcher.search,例如:
IndexSearcher.search(query,sort);
关于Sort类,在其内部定义了6种构造方法:
public Sort() //
public Sort(SortField field) //通过构造某个域(field)的SortField对象根据一个域进行排序
public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序
public Sort(String field) //根据某个域(field)的名称构造Sort进行排序
public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序
public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序
4、直接使用SortField实现排序
关于SortField类,在其内部定义了7种构造方法:
public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序
public SortField (String field, int type)
public SortField (String field, int type, boolean reverse)
public SortField (String field, Locale locale)
public SortField (String field, Locale locale, boolean reverse)
public SortField (String field, SortComparatorSource comparator)
public SortField (String field, SortComparatorSource comparator, boolean reverse)
type对应的值分别为:
SortField. SCORE 按积分排序
SortField. DOC 按文档排序
SortField. AUTO 域的值为int、long、float都有效
SortField.STRING 域按STRING排序
SortField..FLOAT
SortField.LONG
SortField.DOUBLE
SortField.SHORT
SortField.CUSTOM 通过比较器排序
SortField.BYTE
5、自定义排序
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧
发表评论
-
基于sensei+lucene的分布式搜索终于上线了-2012-12-08
2011-12-08 13:26 1649基于sensei+lucene的分布式搜索终于上线了 ... -
[转载] sensei分布式实时搜索系统源码解析(二) 分布式Search的流程
2011-07-22 14:57 1481看来自己很懒,发现前同事的sensei 研究了 转载: ht ... -
[转载] sensei分布式实时搜索系统源码解析(一) senseiServer的启动及若干概念
2011-07-22 14:55 1794看来自己很懒,发现前同事的sensei 研究了 转载:htt ... -
lucene分布式搜索sensei的使用及完善
2011-07-22 14:32 3552原创文章,转载请注明 ... -
转载:几种常见的基于Lucene的开源搜索解决方案对比
2011-04-06 14:38 1336一 直接使用 Lucene ( http://lucene ... -
转载: Apache Zookeeper入门1
2011-04-06 14:36 1907源: http://www.javabloger.com/ar ... -
转载:Lucene查询语法详解
2011-04-02 10:33 1110英文原文地址:http: ... -
各种字符串Hash函数比较
2011-02-12 14:54 4132Java自带的字符串hash函数: public ... -
Lucene MoreLikeThisQuery 例子 备注
2011-01-06 11:22 14571。 编码问题: MoreLikeThisQuery中的 ... -
Lucene MoreLikeThisQuery 例子
2011-01-04 13:42 2839要做一个跟文章标题相关的新闻,本来想简单做一下,就是把标 ... -
lucene 3.0 分词例子 转载
2010-12-27 17:30 1940源:http://hxraid.iteye.com/blog ... -
lucene基本概念
2010-12-03 15:51 1166一、lucene索引的建立 1 ... -
[转载] lucene使用与优化
2010-12-03 10:14 1061源:http://www.cnblogs.com/bysshi ... -
[转载] 几种常见的基于Lucene的开源搜索解决方案对比
2010-12-02 16:07 911源:http://blog.fulin.org/201 ... -
lucene中的Token, TokenStream, Tokenizer, Analyzer
2010-11-22 10:41 1358转载: Token: 如果一个字段被token化,这表示它经 ... -
Lucene3.0的几种分词系统
2010-11-17 17:25 12921、 StopAnalyzer StopAnalyze ... -
当前几个主要的Lucene中文分词器的比较
2010-11-17 12:35 13281. 基本介绍: paoding :Lucene中 ... -
lucene score explain 评分解释说明
2010-11-16 17:29 2269通过Searcher.explain(Query qu ... -
lucene 2010 大会资料 Lucene Revolution 2010
2010-10-27 15:41 959lucene 2010 大会资料资料下载 http://ww ... -
bobo-browse 的分组统计(Faceted Search)
2010-10-25 16:43 2695基于lucene的bobo-browse 的分组统计(Face ...
相关推荐
Sort sort = new Sort(new SortField("name", SortField.STRING)); TopDocs topDocs = searcher.Search(query, sort); ``` 在上面的代码中,我们使用 Sort 对象来指定根据 "name" 字段进行升序排序。 二、Lucene ...
“Lucene5学习之排序-Sort”这个标题表明了我们要探讨的是关于Apache Lucene 5版本中的排序功能。Lucene是一个高性能、全文检索库,它提供了强大的文本搜索能力。在这个主题中,我们将深入理解如何在Lucene 5中对...
Lucene允许用户通过`SortField`类的`CUSTOM`参数创建自定义排序规则。在这个过程中,我们需要提供一个`Comparator`,用于比较两个文档的排序值。例如,如果我们有一个`List<Map>`字段,其中每个Map表示一个属性,...
这里的`SortField`实例按照它们在`Sort`构造函数中的顺序决定优先级。 此外,Lucene5引入了`FieldComparatorSource`和`FieldDoc`接口,允许开发者自定义比较器和文档的排序行为。这些高级特性可以用来实现更复杂的...
因此,了解如何在 Lucene 中实现自定义排序是非常关键的。在这个话题中,我们将深入探讨如何根据特定的业务需求对搜索结果进行定制排序。 首先,我们要明白 Lucene 默认的排序机制。默认情况下,Lucene 搜索结果是...
深入了解 Lucene 之三排序算法 Lucene 排序算法是搜索引擎中的核心组件之一,负责将搜索结果按照相关度排序以便用户快速找到所需信息。 Lucene 的排序算法主要基于 tf-idf 模型,以下是 Lucene 排序算法的详细介绍...
本资料主要探讨了Lucene中的排序、过滤和分页技术,这些都是构建高效、实用的信息检索系统的重要组成部分。 **排序(Sorting)** 排序是Lucene中的一项核心功能,允许我们根据文档的某个或多个字段来对搜索结果...
《Lucene4.X实战:构建类百度搜索的大型文档海量搜索系统——排序篇》 在搜索引擎的世界里,正确的排序机制是提升用户体验的关键因素之一。Apache Lucene,作为一款强大的全文检索库,提供了丰富的功能,包括对搜索...
在"lucene4.3 按坐标距离排序"这个主题中,我们将探讨如何在Lucene 4.3版本中利用地理位置信息进行文档排序,特别是在处理地理空间搜索时的应用。 首先,Lucene 4.3引入了对地理空间搜索的支持,这允许我们根据地理...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
- 在查询时,通过设置Sort对象指定排序依据和顺序。 5. 高亮显示: - Lucene提供Highlighter类来高亮搜索结果中的关键词。首先,使用Analyzer分析文档内容,然后使用Highlighter找出关键词出现的位置,并用特定...
通过Sort对象可定制排序,如改变文档的Boost值或使用自定义的Similarity方法。Boost值可以在文档级别或字段级别设置,以影响文档的排名。文档Boosting乘以Field-Boosting来计算最终的加权值,如果未特别设置,通常为...
3. **排序(Sort)**:Lucene默认按照文档的得分进行排序,但也可以使用`Sort`工具自定义排序规则。例如,你可以设置`SortField`来指定一个或多个字段进行排序,如`SortField(int, SortField.Type, boolean ...
并按照lucene的得分算法进行多条件检索并按照得分算法计算匹配度排序。 可以输入一句话进行检索。 lucene.net的版本为2.9.2 盘古分词的版本为2.3.1 并实现了高亮功能。高亮上使用的是盘古分词的高亮算法。 有点小bug...
1. Lucene-5900:引入了多个构造函数,如`InfixSuggester`和`ICUCollationKeyAnalyzer`,并移除了`test_version_current`测试框架依赖。这使得构造建议器和分析器更加灵活,同时提高了测试的针对性。 2. Lucene-...