锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
榪樻槸鎷夸笂闈㈢殑渚嬪瓙鍋氫緥瀛愬惂錛?span lang="EN-US">
鍦ㄤ笂闈㈢殑JUnit嫻嬭瘯鐢ㄤ緥閲屽姞鍏ワ細
public void InsertCompass()
{
CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class);
Compass com = comConfig.buildCompass();
CompassSession comSession =
com.openSession();
CompassTransaction comTx =
comSession.beginTransaction();
Article article = new Article();
article.setId((long)0);
article.setContent("Compass瀛︿範鏂囨。");
article.setTitle("瀛︿範Compass鏌ヨ");
article.setPublishDate(new Date());
comSession.save(article);
article = new Article();
article.setId((long)1);
article.setContent("Compass鏄涓涓熀浜?span lang="EN-US">lucene鐨?span lang="EN-US">java寮婧愭鏋?span lang="EN-US">");
article.setTitle("瀛︿範Compass");
article.setPublishDate(new Date());
comSession.save(article);
comTx.commit();
}
灝辨槸鎻掑叆涓や釜瀵硅薄鏁版嵁銆?span lang="EN-US">
涓嬮潰鎴戜滑灝辨悳鎼滀綋楠屼竴涓嬪惂錛?span lang="EN-US">
public void TestQuery()
{
CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class);
Compass com = comConfig.buildCompass();
CompassSession session =
com.openSession();
CompassTransaction tx =
session.beginTransaction();
CompassHits hits =
session.queryBuilder()
.queryString("titleIndex:瀛︿範")
.toQuery()
.addSort("title",
CompassQuery.SortPropertyType.STRING)
.addSort("publishDate",CompassQuery.SortPropertyType.INT)
.hits();
for(int
i=0;i<hits.getLength();i++)
{
System.out.println(((Article)hits.data(i)).getTitle());
}
}
杈撳嚭緇撴灉鏄?span lang="EN-US">
瀛︿範Compass鏌ヨ
瀛︿範Compass
鍏跺疄Compass瀹屽叏娌℃瘯瑕侀偅涔堢綏鍡︼紝瀹冨氨鏄負浜嗕緷鐓?span lang="EN-US">Hibernate鏉ョ殑銆傝浼?span lang="EN-US">Hibernate鐨勭▼搴忓憳鍙互寰堝鏄撶殑鎺屾彙Compass銆傛悳绱㈢殑鍓嶄竴閮ㄥ垎灝變笉璇翠簡錛屽拰Hibernate鐨勫垵濮嬪寲涓鏍蜂笖鍓嶉潰涔熻浜嗭紝浠?span lang="EN-US">CompassHits寮濮嬪惂銆?span lang="EN-US">
鍙互鐪嬪埌錛氭悳绱㈠氨鐢ㄥ埌CompassHits,Query錛?span lang="EN-US">CompassQueryBuilder榪欎竴鐐瑰張鍜?span lang="EN-US">lucene寰堝儚銆?span lang="EN-US">
session.queryBuilder()榪斿洖CompassQueryBuilder鐨勫璞★紝鍐嶈皟鐢?span lang="EN-US">queryString鏉ユ煡璇㈡悳绱㈠瓧涓層傚彲榪欎釜鏋勯犲瓧涓插氨鏈夊闂簡錛?#8220;titleIndex:瀛︿範”琛ㄧず鎸囨槑瀛楁鍚嶆悳绱紝濡傛灉鎯蟲寚鏄庡涓瓧孌靛憿鍙互鐢ㄧ┖鏍煎拰“+”闅斿紑濡傦細“titleIndex:瀛︿範 +contentIndex:絎?#8221;
娉ㄦ剰錛氭煡璇㈠瓧涓查噷鐨勬爣璇嗕笉鏄璞$殑灞炴э紝鑰屾槸瀵硅薄鐨勫睘鎬ф槧灝勬垚绱㈠紩鐨勫悕瀛楋紝榪欎釜鏄彲浠ュ湪Article.cmp.xml閲岀湅鍒扮殑銆傝繕鏈夊氨鏄竴瀹氳鍦ㄤ袱涓悳绱㈠唴瀹逛箣闂村姞絀烘牸瑕佷笉鐒朵粈涔堥兘鎼滀笉鍒般?span lang="EN-US">
addSort灝辨槸瀵規悳绱㈠嚭鐨勭粨鏋滄寜涓瀹氱殑欏哄簭鎺掑簭銆?span lang="EN-US">
Hits()鍛㈠氨鏄繑鍥?span lang="EN-US">hits緇撴灉闆嗗惂銆?span lang="EN-US">
鏈鍚庣敤涓?span lang="EN-US">for寰幆鍒╃敤hits.data(i)灝嗙粨鏋滈亶鍘嗚緭鍑恒?span lang="EN-US">
涓婇潰鐨勪緥瀛愯揪鍒頒簡Hibernate涓?span lang="EN-US">Query鐨勫姛鑳姐傝?span lang="EN-US">CompassQuery榪樻湁鍜?span lang="EN-US">Criteriat鍔熻兘涓鏍風殑錛氬啀鐪嬩釜鎼滅儲鐨勪緥瀛愬惂錛?span lang="EN-US">
CompassConfiguration comConfig = new
CompassConfiguration().configure().addClass(Article.class);
Compass com
= comConfig.buildCompass();
CompassSession
session = com.openSession();
CompassTransaction
comTx = session.beginTransaction();
CompassQueryBuilder
queryBuilder= session.queryBuilder();
CompassQuery
compassQuery = queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "瀛︿範")).toQuery();
CompassHits
hits = compassQuery.addSort("title", CompassQuery.SortPropertyType.STRING).hits();
for(int
i=0;i<hits.getLength();i++)
{
System.out.println(((Article)hits.data(i)).getTitle());
}
comTx.commit();CompassQuery閲屾湁lt,le,gt,ge鍜?span lang="EN-US">Criteriat鏄竴涓牱鐨勩備笉榪?span lang="EN-US">Compass鐨?span lang="EN-US">jar鍖呴噷娌℃湁eq榪欎釜鍑芥暟錛屼絾鏄湪Compass
CompassQueryBuilder queryBuilder = session.createQueryBuilder();
queryBuilder.bool().addMust(queryBuilder.eq("name", "jack")).addMust(queryBuilder.lt("birthdate", "19500101"))
.toQuery().hits();
榪欎釜鍙兘鏄?span lang="EN-US">Compass鐨勪竴涓?span lang="EN-US">bug銆?span lang="EN-US">
鏃㈢劧娌℃湁eq鎴戜滑灝辯敤錛?span lang="EN-US">
queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "瀛︿範")).toQuery();鍋氫釜婕旂ず鍚с?span lang="EN-US">
緇撴灉鐞嗘兂鐨勩?span lang="EN-US">
鍏蜂綋鐨勭敤娉曞拰Hibernate涓鏍鳳紝涔熷彲浠ユ煡鐪?span lang="EN-US">Compass鐨勫府鍔╂枃妗c?span lang="EN-US">