摘要:转载http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/从一个简单的 JPA 示例开始本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例;接着重构该示例,并引入 Spring 框架,这两部分不会涉及过多的篇幅,如果希望能够深入学习 Spring 和 JPA,可以根据本文最后提供的参考资料进一步学习。自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 J
阅读全文
07 2012 档案
摘要:配置JPASpring JPA提供了两种方法创建JPA EntityManagerFactory<beans> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="myPersistenceUnit" /> </bean></bea
阅读全文
摘要:servlet现在有许多项目仍在使用,一般作为接口调用,很早以前我曾发表过一篇关于《Spring管理Filter和Servlet 》的文章,后来发现spring提供了更为简单的管理servlet的方式,那就是使用SimpleServletHandlerAdapter,基于这个适配器,可以将servlet像普通bean一样声明到spring配置文件中,而无需在web.xml中声明。先来说一下SimpleServletHandlerAdapter,它是spring提供的处理适配器,专门适配类型为javax.servlet.Servlet的处理器,spring提供了多种适配器,分别负责不同的处理器适
阅读全文
摘要:转载http://13shu.iteye.com/blog/7438251、请求被solr的过滤器拦截转发到RequestHandlerBase中的handleRequest()2、handleRequest()中调用handleRequestBody()(抽象的)根据请求参数qt=standard查找solrconfig.xml配置文件(SolrConfig初始化)中找到SearchHandler类Xml代码<requestHandlername="standard"class="solr.SearchHandler"default="
阅读全文
摘要:1、在solrconfig.xml中增加Xml代码<queryParsername="imdismax"class="com.szhtp.search.parse.IMDisMaxQParserPlugin"/><requestHandlername="imdismax"class="solr.SearchHandler"><lstname="defaults"><strname="defType">imdismax</s
阅读全文
摘要:转载http://www.colorfuldays.org/program/solr/solr%E6%89%A9%E5%B1%95dismaxqparser/最近产品的同事反应给我一个搜索的问题,用户在输入如“QueryParser定制”时搜索不到结果,而搜索“QueryParser 定制”,就能找到正确的结果。这个问题导致搜索无结果率偏高。前天开始致力于解决该问题,经过两天的研究,最终通过定制QueryParser解决该问题。这个问题的解决方案是定制了Solr的QueryParser,下面讲一下如何定制Solr的QueryParser。我们的搜索引擎使用的是edismax类型,因为一些业务需
阅读全文
摘要:转载http://www.colorfuldays.org/program/solr/solr_edismax_boost/使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情。Solr本身的排序打分规则是继承自Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是对于一些专门领域的搜索来讲,文本相关度的打分是不合适的。如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法1、定制Lucene的boost算法,加入自己希望的业务规则;2、使用Solr的ed
阅读全文
摘要:默认情况下,Solr查询语法只有两种形式:关键词或者以空格分隔的关键词组。当查询英文时,英文本身就是以空格来区分词的,所以Solr就能直接获取英文词并组装Query;但是中文句子中间没有空格,Solr查询时把整个句子交给Query,然后由Query再按照Field来分词、查询。这样就丧失了DisMax中qf所能带来的好处。如果能够在用户输入之后,传入DisMax和QueryComponent之前,把中文句子分割为:关键词+空格+关键词,就能享受Solr中的所有好处。分析DisMaxQParserPlugin和DisMaxQParser的实现,在DisMaxQParser中能够获得默认查询字段和
阅读全文
摘要:在很多情况下,我们并不想自己主动触发COMMIT相应的XML给SOLR,这样带来很多的不便,恰好,SOLR通过配置文件可以自行在满足指定的条件下自动的COMMIT索引,同时,让前端检索实例可以检索到最新生成的数据,而不需要人为干预。 方法很简单:找到solrConfig.xml文件找到以下行,并增加以下配置view plaincopy to clipboardprint?<updateHandlerclass="solr.DirectUpdateHandler2"><autoCommit><maxDocs>10000</maxDoc
阅读全文
摘要:转载自:http://www.cnblogs.com/ezhangliang/archive/2012/04/11/2441945.htmlScheduler主要解决两个问题:1.定时增量更新索引。2.定时重做索引。经过测试,Scheduler已经可以实现完全基于配置,无需开发功能,无需人工干预的情况下实现以上两个功能(结合 Solr 的Data Import Request Handler前提下)。为了方便以后使用,我将代码放到http://code.google.com上,地址是:http://code.google.com/p/solr-dataimport-scheduler/这里贴出
阅读全文
摘要:转载自http://martin3000.iteye.com/blog/1328833使用DataImportHandler进行简单数据导入还是比较有效的,特别是DIH中针对简单的数据库表,可以把完全导入和增量导入合并成一个语句,非常方便。我的使用方式如下所示1。配置schemaXml代码 <requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"> <lstname="defaults"&
阅读全文
摘要:一、Facet介绍 solr facet 是solr搜索的一大特色,facet不好翻译,有说是垂直搜索,有说是分片搜索,但都不是很好,还是懒得翻译了,就叫facet ,具体功能看下面的例子意会吧。 比如你上淘宝,输入“笔记本”进行搜索,就会出现品牌分类,价格范围等分类,这个就叫facet了。这个例子也许好不是那么准确的描述facet,不过基本上就是这个意思。对输入关键字后搜索出来的结果再进行分类。二、Facet查询进行Facet查询需要在请求参数中加入”facet=on”或者”facet=true”只有这样Facet组件才起作用.1.FieldFacetFacet字段通过在请求中加入”face
阅读全文
摘要:solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会表示不同的类目相关查询结果的数量.比如搜索数码相机, 在搜索结果栏会根据厂商, 分辨率等维度列出, 这里厂商, 分辨率就是一个个facet.然后在厂商下面会有nikon, canon, sony等品牌, 这个叫约束(constraints)接下来是根据选择, 列出当前的导航路径, 这个叫面包屑(breadcrumb).solr有几种facet:普通facet, 比如从厂商品牌的维度建立fact查询
阅读全文
摘要:1.standard(StandardRequestHandler) 标准查询分析器使用SolrQuerySyntax通过q参数来指定查询,它要求被很好的组织(Formed),或返回一个异常。对于精确查询和任意复杂的查询,使用Standard效果很好。 2. dismax (DismaxRequestHandler): dismax查询分析器是一个为用户提供的更宽容的查询分析器,查询字符串直接传递一个q参数。其他参数可以很容易搜索横跨多个Field,使用Disjunctions和不严格的短语查询返回高度相关的结果。这里的“部分匹配”,是指返回的结果没有完全匹配所有搜索的关键词。DisMaxQP
阅读全文
摘要:原文出处:http://blog.chenlb.com/2010/08/solr-use-custom-query-parser.html由于 Solr 默认的 Query Parser 生成的 Query 一般是 “短语查询”,导致只有很精确的结果才被搜索出来。大部分时候我们要分词后的 BooleanQuery。一年半前有篇关于solr 使用自定义的 QueryParser的文章。使用这个方法在 solr 中可以用自己的 Query Parser。按照那篇文章,分别扩展:QParserPlugin、QParser、SolrQueryParser。我把它们实现为:ExtLuceneQParse
阅读全文
摘要:原文出处:http://blog.chenlb.com/2009/02/use-custom-solr-queryparser.html如果想让 solr 有更加强大的功能或在查询时做一些特别的处理。可以在 solrconfig.xml 里注册自定义的 QueryParser(查询解析器),这是 solr 1.3 的新功能(插件功能),如:<queryParsername="mylucene"class="org.apache.solr.search.MyQParserPlugin"/>query parser 插件时,要先了解下 solr
阅读全文
摘要:DisplayTag是一个非常好用的表格显示标签,适合MVC模式,其主页在http://displaytag.sourceforge.net/一、最简单的情况,未使用<display:column/>标签 <%request.setAttribute( "test", new ReportList(6) );%> <display:table name="test" /> 标签遍历List里的每一个对象,并将对象里的所有属性显示出来。一般用于开发的时候检查对象数据的完整性。二、使用<display:column/
阅读全文
摘要:主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做HibernateDAO.也可以直接利用它2) iBATIS另一个ORM工
阅读全文
摘要:一般生成HTML页时,都会用比如freemarker等去搞,但今天看到和学到一个还应该不错的方法,是使用httpclient的get方法,去读某个动态的URL,然后把读出的内容再保存成HTML的,下面例子介绍一下:public class HtmlParser {HttpClient httpClient = null; //HttpClient实例GetMethod getMethod =null; //GetMethod实例BufferedWriter fw = null;String page = null;String webappname = null;BufferedReader
阅读全文
摘要:简介:Shiro 是一个 Apache Incubator 项目,旨在简化身份验证和授权。在本文中,了解 Apache Shiro 并通过示例来在一个 Groovy web 应用程序中尝试使用 Shiro 进行身份验证和授权。Apache Shiro 是一个框架,可用于身份验证和授权。本文提供了几个示例用来展示如何在 Java™ 应用程序中使用 Shiro 并给出了如何在一个 Grails web 应用程序中使用它的概述。为了从本文中最大限度地受益,您应该习惯于创建 Java 应用程序并安装了如下的几个组件:Java 1.6 JDKGrails(用来运行这些 web 应用程序示例)身份验证和授
阅读全文
摘要:认证是身份验证的过程,也就是试图验证一个用户的有效性。为此,用户本身就需要提供系统可识别和可信任的身份标识。这篇指南的目标在于引导如何在java中使用Shiro的认证机制。如果现在还没做好准备工作,那么可以先去了解“10分钟教会你Apache Shiro”来帮助你理解Shiro是如何工作的。须知术语Subject:Subject是应用程序中用户在安全领域特定用户的缩影。它可以是真实的用户、第三方进程、连接到应用的server、甚至是corn作业。换句话说,Subject是连接到应用程序的任何东西。Principals:一个Subject定义的属性。比如:first name, last nam
阅读全文
摘要:Apache Shiro的配置主要分为四部分:对象和属性的定义与配置URL的过滤器配置静态用户配置静态角色配置其中,由于用户、角色一般由后台进行操作的动态数据,因此Shiro配置一般仅包含前两项的配置。Apache Shiro的大多数组件是基于POJO的,因此我们可以使用POJO兼容的任何配置机制进行配置,例如:Java代码、Sping XML、YAML、JSON、ini文件等等。下面,以Spring XML的配置方式为例,并且对其中的一些配置参数进行一些简单说明。Shiro对象的配置:主要是对Shiro各个组件的实现进行定义配置,主要组件在前文已做过简单介绍,这里不再一一说明。Xml代码&l
阅读全文
摘要:在认证、授权内部实现机制中都有提到,最终处理都将交给Real进行处理。因为在Shiro中,最终是通过Realm来获取应用程序中的用户、角色及权限信息的。通常情况下,在Realm中会直接从我们的数据源中获取Shiro需要的验证信息。可以说,Realm是专用于安全框架的DAO.一、认证实现正如前文所提到的,Shiro的认证过程最终会交由Realm执行,这时会调用Realm的getAuthenticationInfo(token)方法。该方法主要执行以下操作:1、检查提交的进行认证的令牌信息2、根据令牌信息从数据源(通常为数据库)中获取用户信息3、对用户信息进行匹配验证。4、验证通过将返回一个封装了
阅读全文
摘要:授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限。如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等。一、授权的三要素授权有着三个核心元素:权限、角色和用户。权限权限是Apache Shiro安全机制最核心的元素。它在应用程序中明确声明了被允许的行为和表现。一个格式良好好的权限声明可以清晰表达出用户对该资源拥有的权限。大多数的资源会支持典型的CRUD操作(create,read,update,delete),但是任何操作建立在特定的资源上才是有意义的。因此,权限声明的根本思想就是建立在资源以及操作上。而我们通过权限声明仅仅能了解
阅读全文
摘要:认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合。一、Shiro认证过程1、收集实体/凭据信息Java代码//Exampleusingmostcommonscenarioofusername/passwordpair:UsernamePasswordTokentoken=newUsernamePasswordToken(username,password);//”RememberMe”built-in:token.setRememberMe(true)
阅读全文
摘要:一、什么是ShiroApache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:认证 - 用户身份识别,常被称为用户“登录”;授权 - 访问控制;密码加密 - 保护或隐藏数据防止被偷窥;会话管理 - 每用户相关的时间敏感的状态。对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。二、Shiro的架构介绍首先,来了解一下Shiro的三个核心组件:Subject, SecurityManager 和 Realms. 如下图:Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并
阅读全文
摘要:一、在web.xml中添加shiro过滤器Xml代码<!--Shirofilter--><filter><filter-name>shiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>shiroFilter</filter-name><ur
阅读全文
摘要:Taglib 伪指令Java代码<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><%@tagliburi="http://java.sun.com/jsp/jstl/fmt"prefix="fmt"%><%@tagliburi="http://java.sun.com/jsp/jstl/functions"prefix="fn"%>输出<c:out>语法:J
阅读全文
摘要:1)在solrconfig.xml增加<!--新增加的配置--> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>2
阅读全文
摘要:简介:在本部分中,Lucene Java™ 的提交人 Grant Ingersoll 通过对用于企业的特性(包括管理界面、高级配置选项)以及与性能相关的特性(比如缓存、复制和日志记录)的探究,完成了对 Solr 的介绍。在本系列的第 1 部分,我为您介绍了 Apache Solr,一种基于 HTTP 的开源搜索服务器,它可以很容易地与多种 Web 应用程序集成。我展示了 Solr 最基本的功能,包括索引、搜索和浏览,介绍了 Solr 模式并解释了它在配置 Solr 功能方面的作用。在本部分中,我将通过列举 Solr 作为大型生产环境中理想的解决方案时所具备的特性来完成对 Solr 的介绍。涵盖
阅读全文
摘要:简介:Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll 将介绍 Solr 并向您展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中。一旦用户需要某种信息,就可以立即搜索到这些信息,这种要求再也不是可有可无的了。随着 Google 和类似的复杂搜索引擎的出现,用户希望得到高质量的搜索结果,帮助他们快速、轻易地找到所需的信息。经理对您的在线购物站点同样抱有很高的期望,要求它能够提供一个可伸缩、高度可用且易于维护的搜索解决方案,并且
阅读全文
摘要:原文出处:http://blog.chenlb.com/2009/01/ictclas4j-for-lucene-analyzer.html在 lucene 的中文分词域里,有好几个分词选择,有:je、paoding、IK。最近想把 ictclas 拿来做 lucene 的中文分词。网上看了下资料,觉得 ictclas4j 是比较好的选择,作者博客相关文章:http://blog.csdn.net/sinboy/category/207165.aspx。ictclas4j 目前是0.9.1版,项目地址:http://code.google.com/p/ictclas4j/,下载地址:http:
阅读全文
摘要:原文出处:http://blog.chenlb.com/2009/04/use-chinese-segment-mmseg4j-in-lucene-demo.htmlmmseg4j 发布也有一段时间了,前些日子忙着发布新的版本,修正 bug 之类的。使用示例一直拖到现在,其实 svn 上的 test 有使用 lucene 例子。如果你了解 lucene ,就不用例子也可以很方便与它集成。mmseg4j 有几个 analyzer:SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer、MMSegAnalyzer。前面三个都是继承 MMSegAnalyzer,
阅读全文
摘要:原文出处:http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.htmlmmseg4j 第一个版本就可以方便地与 solr 集成,在google code上面有简单的说明,第一版的发布博客也有简单的使用说明:中文分词 mmseg4j。为了更清楚说明在 solr 中使用 mmseg4j 中文分词,还是写篇博客吧。目前有两个版本的 mmseg4j,1.7 版比较耗内存(一个词库目录就要 50M 左右),所以在默认jvm内存大小会抛出 OutOfMemoryErroy。我这里示例两个词库目录,所以不用目前最新版 1.
阅读全文
摘要:Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分词算法的比较具体的安装和使用简介:系统结构介绍和演示Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展从Lucene我们还可以学到什么另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且内置了对简单的分布式检索的支持;基于Java的全文索引/检索引擎——LuceneLucene不是一个完整的全
阅读全文