首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Compass兑现站内全文搜索(一)

2013-01-02 
Compass实现站内全文搜索(一)Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search

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

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

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

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

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

    @Searchable(alias="article")       public class Article {                private Long ID; // 标识ID          private String content; // 正文          private String title; // 文章标题          private Date createTime; // 创建时间                @SearchableId          public Long getID() {              return ID;          }                public void setID(Long id) {              ID = id;          }                @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)          public String getContent() {              return content;          }                public void setContent(String content) {              this.content = content;          }                            @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)          public String getTitle() {              return title;          }                public void setTitle(String title) {              this.title = title;          }                      @SearchableProperty(index = Index.TOKENIZED, store = Store.YES)          public Date getCreateTime() {              return createTime;          }                public void setCreateTime(Date createTime) {              this.createTime = createTime;          }                                              }  



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

热点排行