用compass实现站内全文搜索引擎(一)


Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.Compass包括:  
* 搜索引擎抽象层(使用Lucene搜索引荐), 
* OSEM (Object/Search Engine Mapping) 支持, 
* 事务管理, 
* 类似于Google的简单关键字查询语言, 
* 可扩展与模块化的框架, 
* 简单的API. 

如果你需要做站内搜索引擎,而且项目里用到了hibernate,那用compass是你的最佳选择。 

本文用到compass2.14和IK中文分词包,另外将会使用注解来实现 

废话不说,先给出关键的实现代码 

假如现在有个需求,需要根据关键字搜索出文章, 

Java代码   收藏代码
  1. @Searchable(alias="article")   
  2. public class Article {  
  3.   
  4.     private Long ID; // 标识ID  
  5.     private String content; // 正文  
  6.     private String title; // 文章标题  
  7.     private Date createTime; // 创建时间  
  8.   
  9.     @SearchableId  
  10.     public Long getID() {  
  11.         return ID;  
  12.     }  
  13.   
  14.     public void setID(Long id) {  
  15.         ID = id;  
  16.     }  
  17.   
  18.     @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)  
  19.     public String getContent() {  
  20.         return content;  
  21.     }  
  22.   
  23.     public void setContent(String content) {  
  24.         this.content = content;  
  25.     }  
  26.   
  27.   
  28.   
  29.     @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)  
  30.     public String getTitle() {  
  31.         return title;  
  32.     }  
  33.   
  34.     public void setTitle(String title) {  
  35.         this.title = title;  
  36.     }  
  37.   
  38.   
  39.     @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)  
  40.     public Date getCreateTime() {  
  41.         return createTime;  
  42.     }  
  43.   
  44.     public void setCreateTime(Date createTime) {  
  45.         this.createTime = createTime;  
  46.     }  
  47.   
  48.   
  49.   
  50.       
  51.   
  52.   
  53. }  


简单解释一下: 
@Searchable(alias="article")表示这个是可以搜索实体,别名为article. 
@SearchableId  这个是实体搜索的标识ID,和hibernate里的概念差不多,用来区分索引文件里的实体索引。 
@SearchableProperty(index = Index.TOKENIZED, store = Store.YES) 表示这个属性存入索引文件,而且是在分词后在存入. 


本文转自于:http://jeemiss.iteye.com/blog/432644


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导航的根源在于分类,当有100条信息的时候,我们使用类别来定位信息,当有10000条信息的时候,我们用标签来定位信息,当有100..00条信息的时候,无论怎么分类都是难以寻找的,于是就有了搜索… 当一个网站信息越积越多,搜索将会变得越来越重要。以至于终于有一天,当网站发现50%以上的用户来到你的网站第一件事是搜索的时候,搜索就将成为没有“导航”的导航。因此站内搜索成了网站建设的当务之急。随着网络应用的深入,信息量的爆炸性增长,站内搜索成为每个优秀网站必须具备的功能。纵观中国大中小网站,绝大多数网站在海量数据面前一筹莫展,主要表现为: 1、 搜索结果不够精确。索出来的结果往往不是我们需要的,你不得不进行若干次翻页,才能找到自己需要的内容。 2、 搜索速度慢、极慢。一般的搜索都是通过SQL语句中的LIKE关键字实现搜索功能,但LIKE在数量较大时,速度很慢,甚至会导致服务器磐机。 3、 搜索不到正文。与第二条类似,LIKE关键字只能对短文本进行比较操作,而对正文这种长文本,不能进行操作,这时我们的正文中即使有我们需要的内容,但却不能完成搜索任务。 4、 不支持多关键词搜索。只能对一个关键词进行搜索,在实际搜索中,搜索者一般会通过两个关键词进行搜索,缩小搜索范围,以达成自己的意愿。 5、 超长词条搜索不到结果。如果要让超长词条进行完全匹配,那搜索结果可能会极为稀少或者根据找不到搜索结果。 6、 比以上情况稍好的情况。在有的CMS系统中,可以为正文指定关键词,但由于并非专门的搜索引擎算法及结构,也只能是杯水车薪、望洋兴叹,如1、并不能进行相关度排序,2、必须手动或者半自动完全关键词,3、同样不支持超长词条搜索,4、搜全率低,5、新词不能识别,6、只能对CMS范围内的网页进行搜索,7、人工操作效率低下,等等。 为解决以上问题,边缘工作室经过长期的调研,不断摸索、反复实验,厚积薄发,并根据当前趋势开发出了“易搜索-智能全文检索站内搜索引擎”,简称为YSS,使以上问题迎刃而解。YSS主要有以下特点: 1、如你所需,他是真正的搜索引擎:  搜索结果相关度排序  毫秒级高速搜索  多关键词搜索  超长词条搜索  联想式搜索词条输入  相关搜索  网页快照 就象你用百度一样。所不同的是百度提供服务,YSS提供软件。 2、 网页蜘蛛灵活高效。 从网站首页出发,遍历整个网站,不受目录层数限制,同时又不影响网站速度及运行。URL消重、网页过虑的灵活控制让你对网站的每个页面进行实际控制,你可以通过以下几项达成你所希望的网页过虑: 1.1、只抓取指定的一个或者多个网页目录 1.2、不抓取指定的一个或者多个网页目录 1.3、不抓取指定的一个或者多个网页 1.4、只抓取指定的网页 3、可控的正文提取。 可设置网页1到5级正文提取精度,从我们实验的大多数网站来看,采用我们默认的4级可以获取较好的正文提取效果,既不会遗漏有用的文字,又不会造成系统产生垃圾,但有可能你的网站比较特殊,这时你就可以选择其它几级以达到精确的正文提取。 4、可控的中文分词及新词学习。 可设置每个网页最多提取的最多分词数,这样有助于减小数据库开支。同时还可进行新词的自动学习,即使是一个人的名字YSS也能把他找出来。考虑到特殊情况,你还可以指定、编辑、删除任意一个页面的关键词。 5、无人值守。 全索引,任务执行中途退出系统不会停止任务的执行。 监视网页。这是个自动化的功能,在设定监视网页后。系统自动在每天指定时间对网页进行监控,自动抓取网页,自动索引网页,完全不用人为操作,解放了网站管理工作人员,提高了效率。 6、BS架构,虚拟主机支持。 YSS的搜索界面支持IE、FireFox。后台完全的BS架构,一切操作通过浏览器完成,让你在虚拟主机上也可以安装使用YSS。 7、强大功能,简单使用。 无需专业人员、无需专业培训,几分钟就会使用YSS。 8、个性化。 易搜索为每个页面对象指定了CSS样式,只需要对样式文件进行修改即可让你的易搜索改头换面。 易搜索对每个对象如搜索结果、结果页列表等单独赋值,可实现任意的位置调整、更改版面。 搜索选项,可即时启用停用搜索引擎、设置热门搜索、启用关闭联想式词条输入、相关搜索、设置广告等。 9、增强网站软实力: 9.1快速找到访问者所需信息,更好的浏览体验,提高用户操作的友好度 9.2提高的用户粘度 9.3提高的PV量 9.4增强网站技术含量 9.5领先竞争对手 9.6让你的网站更专业
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值