﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-方大帝的JAVA空间-随笔分类-lucene</title><link>http://www.blogjava.net/fangts/category/28193.html</link><description>JAVA</description><language>zh-cn</language><lastBuildDate>Mon, 31 Dec 2007 14:33:02 GMT</lastBuildDate><pubDate>Mon, 31 Dec 2007 14:33:02 GMT</pubDate><ttl>60</ttl><item><title>Compass学习文档(3)</title><link>http://www.blogjava.net/fangts/archive/2007/12/18/168429.html</link><dc:creator>方涛升</dc:creator><author>方涛升</author><pubDate>Tue, 18 Dec 2007 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/fangts/archive/2007/12/18/168429.html</guid><wfw:comment>http://www.blogjava.net/fangts/comments/168429.html</wfw:comment><comments>http://www.blogjava.net/fangts/archive/2007/12/18/168429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fangts/comments/commentRss/168429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fangts/services/trackbacks/168429.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面讲一下高级部分Compass与Hibernate，Spring的集成。Compass内部有对Hibernate,Spring的支持，如果配置好了，可以在建立和更新索引的时候不用Compass写一句代码。爽吧！～不过集成它们比较麻烦那就看我一步一步的来吧：1.首先把Hibernate和Sprin...&nbsp;&nbsp;<a href='http://www.blogjava.net/fangts/archive/2007/12/18/168429.html'>阅读全文</a><img src ="http://www.blogjava.net/fangts/aggbug/168429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fangts/" target="_blank">方涛升</a> 2007-12-18 11:07 <a href="http://www.blogjava.net/fangts/archive/2007/12/18/168429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Compass学习文档(2)</title><link>http://www.blogjava.net/fangts/archive/2007/12/18/168427.html</link><dc:creator>方涛升</dc:creator><author>方涛升</author><pubDate>Tue, 18 Dec 2007 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/fangts/archive/2007/12/18/168427.html</guid><wfw:comment>http://www.blogjava.net/fangts/comments/168427.html</wfw:comment><comments>http://www.blogjava.net/fangts/archive/2007/12/18/168427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fangts/comments/commentRss/168427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fangts/services/trackbacks/168427.html</trackback:ping><description><![CDATA[&nbsp;
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">上面的只讲了<span lang="EN-US">Compass</span>的建立索引也就是存储对象和加载对象<span lang="EN-US">,</span>这里讲一下<span lang="EN-US">Compass</span>的搜索查询功能。上面说了<span lang="EN-US">Compass</span>和<span lang="EN-US">Hibernate</span>是非常像的。<span lang="EN-US">Hibernate</span>查询的时候用的是<span lang="EN-US">Criteriat</span>和<span lang="EN-US">Query</span>而<span lang="EN-US">Compass</span>里用的是<span lang="EN-US">CompassQuery</span>具有以上两个的功能。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">还是拿上面的例子做例子吧：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">在上面的<span lang="EN-US">JUnit</span>测试用例里加入：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><strong><span lang="EN-US" style="font-size: 10.5pt; color: black">public</span></strong><span lang="EN-US" style="font-size: 10.5pt; color: black"> <strong>void</strong> InsertCompass() <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;{ <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassConfiguration comConfig = <strong>new</strong><br />
CompassConfiguration().configure().addClass(Article.<strong>class</strong>); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compass com = comConfig.buildCompass(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassSession comSession =<br />
com.openSession(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassTransaction comTx =<br />
comSession.beginTransaction(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Article article = <strong>new</strong> Article(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setId((<strong>long</strong>)0); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setContent("Compass</span><span style="font-size: 10.5pt; color: black">学习文档<span lang="EN-US">"); <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setTitle("</span><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">Compass</span>查询<span lang="EN-US">"); <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setPublishDate(<strong>new</strong> Date()); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comSession.save(article); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article = <strong>new</strong> Article(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setId((<strong>long</strong>)1); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setContent("Compass</span><span style="font-size: 10.5pt; color: black">是第一个基于<span lang="EN-US">lucene</span>的<span lang="EN-US">java</span>开源框架<span lang="EN-US">"); <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setTitle("</span><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">Compass"); <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article.setPublishDate(<strong>new</strong> Date()); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comSession.save(article); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comTx.commit(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;} <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">就是插入两个对象数据。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">下面我们就搜搜体验一下吧：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><strong><span lang="EN-US" style="font-size: 10.5pt; color: black">public</span></strong><span lang="EN-US" style="font-size: 10.5pt; color: black"> <strong>void</strong> TestQuery() <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;{ <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">CompassConfiguration comConfig = <strong>new</strong><br />
CompassConfiguration().configure().addClass(Article.<strong>class</strong>); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compass com = comConfig.buildCompass(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassSession session =<br />
com.openSession(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassTransaction tx =<br />
session.beginTransaction(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassHits hits =<br />
session.queryBuilder() <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
.queryString("titleIndex:</span><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">") <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
.toQuery() <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
.addSort("title",<br />
CompassQuery.SortPropertyType.<em>STRING</em>) <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
.addSort("publishDate",CompassQuery.SortPropertyType.<em>INT</em>) <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
.hits(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>for</strong>(<strong>int</strong><br />
i=0;i&lt;hits.getLength();i++) <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<em>out</em>.println(((Article)hits.data(i)).getTitle()); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;} <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">输出结果是<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">Compass</span>查询<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">Compass <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">其实<span lang="EN-US">Compass</span>完全没毕要那么罗嗦，它就是为了依照<span lang="EN-US">Hibernate</span>来的。让会<span lang="EN-US">Hibernate</span>的程序员可以很容易的掌握<span lang="EN-US">Compass</span>。搜索的前一部分就不说了，和<span lang="EN-US">Hibernate</span>的初始化一样且前面也讲了，从<span lang="EN-US">CompassHits</span>开始吧。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">可以看到：搜索就用到<span lang="EN-US">CompassHits,Query</span>，<span lang="EN-US">CompassQueryBuilder</span>这一点又和<span lang="EN-US">lucene</span>很像。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">session.queryBuilder()</span><span style="font-size: 10.5pt; color: black">返回<span lang="EN-US">CompassQueryBuilder</span>的对象，再调用<span lang="EN-US">queryString</span>来查询搜索字串。可这个构造字串就有学问了：&#8220;<span lang="EN-US">titleIndex:</span>学习&#8221;表示指明字段名搜索，如果想指明多个字段呢可以用空格和&#8220;<span lang="EN-US">+</span>&#8221;隔开如：&#8220;<span lang="EN-US">titleIndex:</span>学习<span lang="EN-US"> +contentIndex:</span>第&#8221;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><strong><span style="font-size: 10.5pt; color: black">注意：查询字串里的标识不是对象的属性，而是对象的属性映射成索引的名字，这个是可以在<span lang="EN-US">Article.cmp.xml</span>里看到的。还有就是一定要在两个搜索内容之间加空格要不然什么都搜不到。<span lang="EN-US"> <o:p></o:p></span></span></strong></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">addSort</span><span style="font-size: 10.5pt; color: black">就是对搜索出的结果按一定的顺序排序。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">Hits()</span><span style="font-size: 10.5pt; color: black">呢就是返回<span lang="EN-US">hits</span>结果集吧。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">最后用个<span lang="EN-US">for</span>循环利用<span lang="EN-US">hits.data(i)</span>将结果遍历输出。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">上面的例子达到了<span lang="EN-US">Hibernate</span>中<span lang="EN-US">Query</span>的功能。而<span lang="EN-US">CompassQuery</span>还有和<span lang="EN-US">Criteriat</span>功能一样的：再看个搜索的例子吧：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">CompassConfiguration comConfig = <strong>new</strong><br />
CompassConfiguration().configure().addClass(Article.<strong>class</strong>); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compass com<br />
= comConfig.buildCompass(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassSession<br />
session = com.openSession(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassTransaction<br />
comTx = session.beginTransaction(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassQueryBuilder<br />
queryBuilder= session.queryBuilder(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassQuery<br />
compassQuery = queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "</span><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">")).toQuery(); <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompassHits<br />
hits = compassQuery.addSort("title", CompassQuery.SortPropertyType.<em>STRING</em>).hits(); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>for</strong>(<strong>int</strong><br />
i=0;i&lt;hits.getLength();i++) <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<em>out</em>.println(((Article)hits.data(i)).getTitle()); <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <o:p></o:p></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comTx.commit();CompassQuery</span><span style="font-size: 10.5pt; color: black">里有<span lang="EN-US">lt,le,gt,ge</span>和<span lang="EN-US">Criteriat</span>是一个样的。不过<span lang="EN-US">Compass</span>的<span lang="EN-US">jar</span>包里没有<span lang="EN-US">eq</span>这个函数，但是在<span lang="EN-US">Compass<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1.1" unitname="m">1.1M</st1:chmetcnv>1</span>的帮助文档中写着：<span lang="EN-US"> <o:p></o:p></span></span></p>
<pre style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">CompassQueryBuilder queryBuilder = session.createQueryBuilder();<o:p></o:p></span></pre>
<pre style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black"> queryBuilder.bool().addMust(queryBuilder.eq("name", "jack")).addMust(queryBuilder.lt("birthdate", "19500101"))<o:p></o:p></span></pre>
<pre style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toQuery().hits();<o:p></o:p></span></pre>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">这个可能是<span lang="EN-US">Compass</span>的一个<span lang="EN-US">bug</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">既然没有<span lang="EN-US">eq</span>我们就用：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span lang="EN-US" style="font-size: 10.5pt; color: black">queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "</span><span style="font-size: 10.5pt; color: black">学习<span lang="EN-US">")).toQuery();</span>做个演示吧。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">结果理想的。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="word-break: break-all; line-height: 11.25pt"><span style="font-size: 10.5pt; color: black">具体的用法和<span lang="EN-US">Hibernate</span>一样，也可以查看<span lang="EN-US">Compass</span>的帮助文档。<span lang="EN-US"><o:p></o:p></span></span></p>
   <img src ="http://www.blogjava.net/fangts/aggbug/168427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fangts/" target="_blank">方涛升</a> 2007-12-18 11:06 <a href="http://www.blogjava.net/fangts/archive/2007/12/18/168427.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Compass学习文档(1)</title><link>http://www.blogjava.net/fangts/archive/2007/12/18/168424.html</link><dc:creator>方涛升</dc:creator><author>方涛升</author><pubDate>Tue, 18 Dec 2007 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/fangts/archive/2007/12/18/168424.html</guid><wfw:comment>http://www.blogjava.net/fangts/comments/168424.html</wfw:comment><comments>http://www.blogjava.net/fangts/archive/2007/12/18/168424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fangts/comments/commentRss/168424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fangts/services/trackbacks/168424.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Compass是第一个实现java搜索引擎的开源框架,它是基于Lucene之上的，提供更简单的搜索引擎API，事务支持，对象到搜索引擎映射（Annotations &amp; XML），Xml到搜索引擎映射，可以和Hibernate,Spring集成，功能非常的强大。如果用Hibernate,Spring做的项目需要搜索引擎的话，Compass是个非常好的选择。个人认为：如果说Lu...&nbsp;&nbsp;<a href='http://www.blogjava.net/fangts/archive/2007/12/18/168424.html'>阅读全文</a><img src ="http://www.blogjava.net/fangts/aggbug/168424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fangts/" target="_blank">方涛升</a> 2007-12-18 11:03 <a href="http://www.blogjava.net/fangts/archive/2007/12/18/168424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>