- 浏览: 506774 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
使用 Compass 第三方框架维护索引库数据
1. Compass 基于 Lucene 的关系,就类似 Hibernate 于 JDBC 的关系。但是目前 Compass 应用并不广泛,大多都是直接使用 Lucene 。咱为了效率,不差 Compass 再封装的这点功夫。但这个框架确实很精彩 ~
2. 由于 Compass 的 API 风格和 Hibernate 的风格很像,先看看 Hibernate 的 API:
3. Compass 的 API
4. 比较看来, Compass 的 API 简直和 Hibernate 如出一辙。具体,下面写一个 HelloWorld :
** 导入 jar 包:
dist\commons-logging.jar
dist\compass-2.2.0.jar
dist\lucene\*.jar
2.2 是 Compass 最新的版本,但是使用的 lucene 版本却是 2.4 的
lucene2.4 和 现在 3.0 版本的比起来不但 API 有些较大的变化,效率上 3.0 也更好。但是此处不能将 Lucene 的版本换成 3.0 。那样 Compass 底层就没办法工作了。
** 在 src 目录下新建 XML 文件 : compass.cfg.xml
** HelloWorld
domain : Article
** 在 compass.cfg.xml 中映射实体类:
<mappings>
<class name="compass.helloworld.domain.Article" />
</mappings>
** HelloWorld
5. 使用 compass 维护索引库
** CompassUtils
** QueryResult
** DAO
6. 对搜索关键字高亮显示
在 compass.cfg.xml 中 <settings> 节点中加入配置:
<settings>
<!-- 高亮器:摘要大小 -->
<setting name="compass.engine.highlighter.default.fragmenter.simple.size" value="100" />
<!-- 高亮器:前缀 <font color="#FF0000"> -->
<setting name="compass.engine.highlighter.default.formatter.simple.pre" value="<font color='red'>" />
<!-- 高亮器:后缀 </font> -->
<setting name="compass.engine.highlighter.default.formatter.simple.post" value="</font >"/>
</settings>
7. 自定义分词器:
<!-- 这里使用的是 " 极易分词 " 。要注意的时候,分词器必须要是支持 Lucene2.4 的版本 -->
<setting name="compass.engine.analyzer.default.type" value="jeasy.analysis.MMAnalyzer" />
8. 排序
** 影响搜索结果的 “相关度” 排序。 Lucene 默认是通过对匹配结果按照 " 关键字出现的次数 " 、 " 关键词出现的密集程度 " 等,用某种算法形成 “相关度得分”实现排序,得分越高排序越靠前。
程序员可以人为影响搜索结果的相关度。
例如本例中,只需要为实体类 Article 增加一个属性,并加上对应注解:
@SearchableBoostProperty
private float boostValue = 1F;
属性名称随意,但是一定要加上 "@SearchableBoostProperty" 注解,并设置默认值为 1 。设置了这个属性之后,每次保存这个实体时,若不改变这个属性的值,每次搜索出实体数据时,它的相关度都会被乘以 1 。也就是不变。
但是若将这个值设置为 2 的话,搜索时,这个实体对象对应的数据的相关度将乘以 2 。本来它的相关度可能仅仅为 0.4 ,但是乘以 2 后,就成了 0.8 了。它在搜索结果中的排名将大大靠前。例如:
Article article = new Article();
article.setId(27L);
article.setTitle("Title");
article.setContent("content content content");
<span lang
发表评论
-
SolrJ
2012-07-31 20:42 0http://www.ibm.com/developerwor ... -
lucene FilteredQuery
2010-12-28 20:49 1585FilteredQuery包含两个成员变量: Query ... -
ibatis insert 返回对象
2010-12-27 23:09 1369<!-- Insert example, using t ... -
Compass入门 及于spring和ibatis结合
2010-12-23 22:31 964开始之前 什么 ... -
Compass 入门指南
2010-12-23 22:28 928在新架构中打算选 ... -
Lucene搜索方法总结
2010-12-22 16:28 875更多lucene信息欢迎查看http://summerbell ... -
lucene的分组查询(类似sql的group by)的解决方法
2010-12-22 15:42 1438通过lucene搜索去除相同结果。 在网上找了很久到没有答案 ... -
MyEclipse手动修改WebRoot目录后无法打包
2010-12-17 16:04 1602环境: MyEclipse Enterpr ... -
lucene入门
2010-11-17 16:20 818最近一直再研究lucene,把入门的程序和大家分享: 对 ... -
lucene 单机 io性能提高策略
2010-11-16 13:47 964蓝山咖啡(36668534) 13:30:35 所以,首先 ...
相关推荐
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...