- 浏览: 116893 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
hiskyrisa:
nnd,找了一天,终于找到一个好用的东西,顶起顶起,感谢楼主。 ...
Axis2 -eclipse -插件 -
ganky:
试过,不错~~
wrf播放器 -
yansirliu:
谢了 apache上面的链接都不能用了
Axis2 -eclipse -插件 -
xiaoqing20:
这个不错
可以安装
首先一个提示 确定就行了
然后下一步 完成 ...
wrf播放器 -
cuiguanglei:
写的不错哈哈
Hibernate Search, Lucene 与 JBoss Seam
首先,我们需要将相关配置添加到persistence.xml中,如下:
<!-- use a file system based index --> <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" /> <!-- directory where the indexes will be stored --> <property name="hibernate.search.default.indexBase" value="[/path/to/your/location/directory]" /> <property name="hibernate.ejb.event.post-insert" value="org.hibernate.search.event.FullTextIndexEventListener" /> <property name="hibernate.ejb.event.post-update" value="org.hibernate.search.event.FullTextIndexEventListener" /> <property name="hibernate.ejb.event.post-delete" value="org.hibernate.search.event.FullTextIndexEventListener" />
这样我们就设置好了类路径、索引路径、索引操作监听器路径。下面,我们需要添加hibernate-search.jar、hibernate-commons-annotations.jar和lucene-core.jar到你的ear里面。
好了,现在,我们需要告诉Hibernate Search哪个对象被索引,并且我们会对哪些属性感兴趣。
@Entity @Name("product") @Indexed public class Product implements Serializable { static final long serialVersionUID = 1l; @Id @GeneratedValue @DocumentId private Long id; @NotNull @Field(index = Index.TOKENIZED) private String name; @NotNull @Field(index = Index.TOKENIZED) private String description; // getters and setters }
@Indexed注解用来告诉Hibernate Search该持久类是拥有索引的。@DocumentId注解用来标明这个属性是这个对象的ID,并且未被编入索引。此外,我们还有两个属性,分别是name和description。这两个属性都用@Field标注,这样Hibernate Search就被允许分析处理这两个属性。其他可选的属性有Index.NO(不要被分析)、Index.UN_TOKENIZED(不要被分析器预先处理)、Index.NO_NORM(不需要存储的普通属性)。
现在,我们已经拥有了Lucene的所有索引,我们还需要一个搜索的方法。所以我们需要建立一个SearchManager类。
@Name("SearchManager") public class SearchManager { @In private FullTextEntityManager entityManager; private String searchPattern; // getters and setters for searchPattern public List getResults() { Map boostFields = new HashMap(2); // increase the importance of the name field // over the other product fields boostFields.put("name", 4f); String[] productFields = {"name", "description"}; QueryParser parser = new MultiFieldQueryParser(productFields, new StandardAnalyzer(), boostFields); parser.setAllowLeadingWildcard(true); Query luceneQuery; try { luceneQuery = parser.parse(searchPattern); } catch (ParseException pe) { log.error("found a problem in search", pe); return null; } // extract the products List products = entityManager.createFullTextQuery(luceneQuery, Product.class). setMaxResults(20).getResultList(); return products; } }
好了,现在我们可以创建search.xhtml文件,用来显示搜索结果了。下面是该文件的一个片段。
<rich:dataGrid value="#{SearchManager.results}" var="garage">
[ loop over the values ]
</rich:dataGrid>
然后,在pages.xml中添加一个到search.xhtml的入口。
<page view-id="/search.xhtml">
<param name="searchPattern" value="#{SearchManager.searchPattern}"/>
</page>
还剩下一个步骤。我们需要添加一个搜索框到菜单里面。如果你使用了Seam的默认布局,你就会看见/view/layout文件夹下面有一个menu.xhtml文件。如果没有找到,只需要将下面这一段添加到你需要的地方:
<h:form id="search_form">
<h:inputText id="searchPattern" required="true" value="#{SearchManager.searchPattern}" />
<h:commandButton action="/search.xhtml" value="search"></h:commandButton>
</h:form>
现在,你可以开始搜索你想要的对象了。是不是非常简单?但是,如果对象的一个属性是用来表示这个对象是否能显示在页面上,那应该怎么办?好的,在这种情况下,你需要添加一个过滤器。过滤器都继承自org.apache.lucene.search.Filter类。
想象一下,我们在产品类上有一个属性是用来标明产品的状态的,这个属性有三种值"L"表示有效的产品,"D"表示被删除的产品,"P"表示待发布的产品。显然,在用户搜索的时候,我们只想显示出可见的产品。所以我们需要添加一个过滤器:
public class LiveProductFilter extends Filter { private static final long serialVersionUID = 1l; public BitSet bits(IndexReader reader) throws IOException { BitSet bitSet = new BitSet( reader.maxDoc() ); TermDocs termDocs = reader.termDocs( new Term("status", "L") ); while ( termDocs.next() ) { bitSet.set( termDocs.doc() ); } return bitSet; } }
为了让Hibernate Search能够找到我们在产品类上添加的过滤器,我们需要添加下面这个注解:
@FullTextFilterDefs ( { @FullTextFilterDef(name="liveProduct", impl = LiveProductFilter.class, cache=false) })好了,就写到这里。
想要了解更多信息,请参考Hibernate Search文档
发表评论
-
JBarcode 本地加载
2020-06-30 16:20 229<dependency> <gro ... -
Spring boot应用启动后首次访问很慢的问题
2020-05-02 16:50 581Java随机数生成依赖熵源(Entropy Source) ... -
Spring boot 定时任务 单线程解决方案
2020-05-02 16:49 474需要实现SchedulingConfigurer并重写set ... -
MX发送邮件
2010-03-26 15:40 1812邮件交换(MX,Mail Exchange)记录用于指出某个D ... -
Axis2 -eclipse -插件
2010-02-24 15:45 1298Axis2 -eclipse -插件 解压即可使用 -
urlrewriter
2010-02-04 11:20 867urlrewriter -
支付文档(网银、快钱)
2009-09-29 10:07 1578支付文档(网银、快钱) -
通过在classpath自动扫描方式把组件纳入spring容器中管理
2009-06-07 21:09 1109spring2.5为我们引入了组件自动扫描机制,他可以在类路径 ... -
Hibernate annotation
2009-06-07 20:19 1058@Entity ... -
打jar包
2009-05-11 11:22 876Manifest-Version: 1.0Ant-Versio ... -
实现文件下载代码
2009-02-07 11:47 1895response.setContentType("a ... -
ANT环境变量设置
2009-02-07 11:46 2785ANT环境变量设置 Windows下ANT用到的环境变量主要 ... -
JAVA环境变量设置
2009-02-07 11:46 839以下设置WinXP及以上用户,右键点击我的电脑->属性- ... -
java正文分页
2009-02-07 11:45 912package com.commons.myfuction; ... -
java提取html正文的图片代码
2009-02-07 11:43 3776public static void main(String ... -
定时循环执行任务
2008-12-05 20:04 1281web.xml的配置 <servlet> ... -
List转换成String数组
2008-10-23 11:23 28697List转换成String数组 关键字: java Java ... -
web发信
2008-09-23 09:12 922package com.util; import java ... -
java的监听方法
2008-09-12 15:36 2395package dome1; import java.ut ... -
安装J2EE
2008-08-29 10:34 14847.Post_Install 安装过程中需要的修改都在 ...
相关推荐
Hibernate 与 Lucene 的整合框架
Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了Hibernate ...
Hibernate Search also helps you scale Lucene in a clustered environment. Hibernate Search in Action aims not only at providing practical knowledge of Hibernate Search but also uncovering some of the ...
Hibernate Search builds on the Lucene feature set and offers an easyto- implement interface that integrates seamlessly with Hibernate-the leading data persistence solution for Java applications. ...
等通配符号),多关键字,模糊查询,排序等6,支持Clustering7,支持直接访问Lucene API8,对Lucene索引,API的高效管理Hibernate Search运行的环境如下:1、JDK或JRE 5.0以上2、Hibernate-Search以及相应的依赖包3...
Solr Elasticsearch lucene 搜索引擎
hibernate-search, Hibernate Search Hibernate 搜索版本:5.8.0. Final - 13-09-2017描述针对Java对象的全文搜索这个项目提供 Hibernate ORM和全文索引服务( 如 Apache Lucene和 Elasticsearch
Search Lucene JavaEE WebApp Struts2 Hibernate.zip
搜索引擎Lucene结合Hibernate的例子,带有所有的LIB!
它是hibernate对著名的全文检索系统Lucene的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernate search就可以对这些字段进行全文检索后获得相应的POJO,...
从检索核心概念入手介绍Lucene与分布式搜搜服务器Elasticsearchd额相关技能
Getting Started with Hibernate Search
很实用的 hibernate-search包 包含三个文件 lucene-core.jar hibernate-search.jar hibernate-common-annonations.jar
Spring3MVC + Hibernate3 + Lucene3 + Easyui + Mysql 简单例子 写的很详细,代码比较舒服。
Lucene与关系型数据库对比,很不错。。。。。。
中文分词检索IKAnalyzer3.2.3Stable+spring3.0.5+hibernate3.6.7+hibernate-search3.4.0.Final+maven hibernate-search3.4.0用的是lucene3.1
Lucene.Net ultra fast search for MVC or WebForms site => made easy!
前一段时间在弄检索,在网上一看做SSH和lucene的很少就自己做了一个,完全能够跑通,有些代码是在网上拷贝的谢谢原作者。
hibernate-search小例子,myeclipse工程文件,有jar包,只要有mysql和myeclipse就可以直接运行。文章在http://blog.csdn.net/hortond。对文件索引和数据库感兴趣的可以下来看看,lucene是个很强大的全文搜索引擎。
6、Hibernate Search 4.2 (Apache Lucene 3.6) 7、SiteMesh 2.4 8、JQuery 1.9 9、Twitter Bootstrap 2.3.1 10、....其他技术就不讲了,具体参考项目 项目访问: 1)后台后台访问地址:...