- 浏览: 16599 次
最新评论
compass搜索
2011年07月01日
compass对于lucene就像hibernate对于jdbc一样,使用方法和hibernate差不多。
Hibernate/LopLink/JPA (ORM)
compass OSEM(Object/Search Engine Mapping)
使用方法:
1、导入所需要的包:
dist/commons-logging.jar
dist/compass-2.2.0.jar
dist/lucene/lucene-analyzers.jar
dist/lucene/lucene-core.jar
dist/lucene/lucene-highlighter.jar
dist/lucene/lucene-queries.jar
dist/lucene/lucene-snowball.jar
dist/lucene/lucene-spellchecker.jar
2、使实体与数据区document 一一映射
这里使用注解的方式:
@Searchable 设置这个类存储到document
@SearchableId 搜索实体的标识属性。
@SearchableProperty 用于普通属性 将java类的属性映射到lucene的document中的field。
(index:设置是否需要分词或建索引
Index.NOT_ANALYZED 不分词但建立索引
Index.ANALYZED 分词并建立索引
Index.NO
store:是否将值存储 eg: Store.YES
boost :设置属性在索引中的重要性 越大级别越高 默认为1)
@SearchableComponent 用于复合类型的属性。
在引用类型的类上设置 在引用类中 Searchable(root =false)
如果引用的名称和其它的相同,比如都是name,要设置name值,name=typename
@SearchableReference
3、保存索引
在hibernate中我们使用sessionfactory管理session 使用session来保存修改删除实体。这里也类似
我们首先创建一个compass 管理CompassSession 使用CompassSession 来保存修改删除实体。
public class ProductSearchBean{
private Compass compass = null;
public ProductSearchBean(){
try {
//编程式配置
compass = new CompassAnnotationsConfiguration()
.setSetting(CompassEnvironment.CONNECTION, " file://indexfile")
//.setSetting(CompassEnvironment.CONNECTION, "ram://index")//在内存中建立索引
.setSetting("compass.engine.highlighter.default.fo rmatter.simple.pre","")
.setSetting("compass.engine.highlighter.default.fo rmatter.simple.post","")//设置高亮为红色
.addScan("cn.itcast.bean").buildCompass();//在cn.itcast.bean包下面搜索包含compass注解的类
} catch (Exception e) {
e.printStackTrace();
}
}
//创建索引,compass支持增量索引.
public void buildIndex(){
CompassSession session = null;
CompassTransaction tx = null;
try {
session = compass.openSession();
tx = session.beginTransaction();
Product p1 = new Product(12,"c瑜珈球","非常好的瑜珈球",12f, "www", 2, 12); //新建一个产品
session.create(p1);
Product p2 = new Product(35,"b瑜珈球","天花板瑜珈球,good",42f, "mmm",2,9);
session.create(p2);
Product p3 = new Product(8,"a蓝球瑜珈球","蓝球小子",125f, "ppp",5,8);
session.create(p3);
tx.commit();
} catch (CompassException e) {
e.printStackTrace();
tx.rollback();
}finally{
if(session!=null && !session.isClosed()) session.close();
}
}
// 删除索引,session. session.delete(product);
//更新就是先删除再创建。
//查询 QueryResult 是自己写的一个分页的结果集类,有属性List resultlist; long totalrecord
public QueryResult search(String keyword, int firstIndex, int maxResult) {
QueryResult qr = new QueryResult();
CompassSession session = null;
CompassTransaction tx = null;
try {
session = compass.openSession();
tx = session.beginTransaction();
//对所有索引Field进行搜索,你也可以指定对某个Field搜索,如:"name:jack",如果想指定多个字段可以用空格和"+"隔开如"name:jack +content:xxx"
CompassHits hits = session.find(keyword);
List products = new ArrayList();
//下面length表示某页内容的最大id值
int length = firstIndex+ maxResult;
if(length>hits.length()) length = hits.length();
for(int i=firstIndex; i search(String keyword, Integer typeid, int firstIndex, int maxResult) {
QueryResult qr = new QueryResult();
CompassSession session = null;
CompassTransaction tx = null;
try {
session = compass.openSession();
tx = session.beginTransaction();
//查询指定类别的匹配记录,并按position字段 降序排序
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassHits hits = queryBuilder.bool()
.addMust(queryBuilder.spanEq("typeid", typeid))
.addMust(queryBuilder.queryString(keyword).toQuery ())
.toQuery().addSort("position", SortPropertyType.FLOAT, SortDirection.REVERSE)
.hits();//类似于这个sql: typeid=1 and (xxxx like ?) order by positoin desc
List products = new ArrayList();
int length = firstIndex+ maxResult;
if(length>hits.length()) length = hits.length();
for(int i=firstIndex; i
发表评论
-
VC中使用自定义消息在进程间通讯
2012-01-20 00:50 1431VC中使用自定义消息在进程间通讯 2011年06月14日 ... -
重叠IO 通信模型,函数记录。
2012-01-20 00:50 910重叠IO 通信模型,函数记录。 2010年12月07日 ... -
apache2 安装与配置
2012-01-20 00:50 1075apache2 安装与配置 2010年11月09日 v0 ... -
Heritrix源码分析(二) 配置文件order.xml介绍
2012-01-20 00:50 642Heritrix源码分析(二) 配 ... -
应用mina的例子做了一些修改,但有关于连接数的问题
2012-01-20 00:50 1167应用mina的例子做了一些修改,但有关于连接数的问题 201 ... -
Windows系统的Regsvr32
2012-01-17 01:08 809Windows系统的Regsvr32 2011 ... -
i9000
2012-01-17 01:08 906i9000 2011年03月26日 *#0*#工程测试, ... -
as3面试题
2012-01-17 01:08 650as3面试题 2011年09月13日 ... -
regsvr32用法集合
2012-01-17 01:08 1003regsvr32用法集合 2011年12月02日 R&a ... -
pcb layout 4
2012-01-15 19:49 749pcb layout 4 2011年12月30日 1.一 ... -
写给Linux内核新手-关于Linux内核学习的误区(转自ChinaUnix.net)
2012-01-15 19:49 998写给Linux内核新手-关于L ... -
C# asp.net获取外网IP
2012-01-15 19:49 1394C# asp.net获取外网IP 2011 ... -
发烧高端版v2.0版本
2012-01-15 19:49 767发烧高端版v2.0版本 4小时前 CPU AMD FX- ... -
apache mina error dead lock: iofuture.await()-yidianfengfan-iteye技术网站
2012-01-11 12:02 1123apache mina error dead lock: io ... -
sqlcmd错误的解决方法-bluedusk-iteye技术网站
2012-01-11 12:02 1003sqlcmd错误的解决方法-bluedusk-iteye技术网 ... -
web framework
2012-01-11 12:02 594web framework 2011年07月01日 w ... -
GAE with spring实践经验
2012-01-11 12:02 706GAE with spring实践经验 2011年07月01 ...
相关推荐
compass搜索引擎技术 eclipse mysql 实现像google的搜索功能
做自己的搜索引擎-搜索引擎精解案例教程lucenen compass 搜索引擎框架
基于Lucene的搜索引擎框架Compass教程
compass对象搜索引擎
NULL 博文链接:https://topmanopensource.iteye.com/blog/484303
Compass全文检索完整实例,可直接运行,带所有jar包。集成SSH框架
compass文档资料
该书详细讲解了搜索引擎与信息检索基础,Lucene入门实例,Lucene索引的建立,使用Lucene进行搜索,排序,过滤和分页,Lucene的分析器,对Word、Excel和PDF格式文档的处理,Compass搜索引擎框架,Lucene分布式和...
基于lucene 的compass 全文搜索实例,可运行,对新手入门很有帮助
compass搜索引擎的架包,快下吧,我找了很久了
ssh+compass实现站内搜索分页.rar
Compass原理深入学习笔记,对于compass知识的一个梳理,希望对大家有用
初学compass,参照网上代码写的。有什么不对的地方请大家指教。
主要功能介绍: ...图书搜索、购买、在线浏览,购物车管理 ...修改src\beans.xml文件中的关于compass搜索缓存目录地址,该文件也在源代码目录下 <prop key="compass.engine.connection">file://d:/compass_index</prop>
compassSession主要是起管理搜索引擎的数据。和hb的SessionFactory一样,compass通常在系统启动时创建,在所有compassSession创建时使用。 <br>当使用CompassSession查询数据时,将会返回CompassHits接口的实例。...
Compass是第一个实现java搜索引擎的开源框架,它是基于Lucene之上的,提供更简单的搜索引擎API,事务支持,对象到搜索引擎映射(Annotations
compass-2.2.0.zip,Compass是第一个实现java搜索引擎的开源框架,它是基于Lucene之上的,提供更简单的搜索引擎API,事务支持,对象到搜索引擎映射
Compass的应用是对lucene的封装使用,关于限定搜索,等等 适合入门的初步了解 内有注释.
这是ssh+compass的项目对数据库2个表进行搜索,看了之后就知道怎么用了,绝对没有错误。
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。 ... 下面是compass在spring中的简明配