浣滆咃細 鍦扮嫳鐢風埖
springside 瀹樻柟緗戠珯: http://www.springside.org.cn
緗戠珯: http://www.compassframework.org/
Compass鏄竴嫻佺殑寮鏀炬簮鐮丣AVA鎼滅儲寮曟搸妗嗘灦錛屽浜庝綘鐨勫簲鐢ㄤ慨楗幫紝鎼滅儲寮曟搸璇箟鏇村叿鏈夎兘鍔涖備緷闈犻《綰х殑Lucene鎼滅儲寮曟搸錛孋ompass 緇撳悎浜嗭紝鍍?Hibernate鍜?Sprin鐨勬祦琛岀殑妗嗘灦錛屼負浣犵殑搴旂敤鎻愪緵浜嗕粠鏁版嵁妯″瀷鍜屾暟鎹簮鍚屾鏀瑰彉鐨勬悳绱㈠姏.騫朵笖娣誨姞浜?鏂歸潰鐨勭壒寰?浜嬬墿綆$悊鍜屽揩閫熸洿鏂頒紭鍖? Compass鐨勭洰鏍囨槸錛氭妸java搴旂敤綆鍗曢泦鎴愬埌鎼滅儲寮曟搸涓?緙栫爜鏇村皯錛屾煡鎵炬暟鎹洿渚挎嵎 .
OSEM: 瀵硅薄鎼滅儲寮曟搸褰卞獎灝?Object Search Engine Mapping),閫氳繃xml閰嶇疆鏂囦歡,鎻愪緵浜哖OJO's (Plain Old Java Objects)鍒版悳绱㈠紩鎿?
1) package鎸囧畾浜嗗搴攋ava綾葷殑鍖呭悕錛?br />2)class涓簆ojo綾誨悕.contract涓哄叕鍏遍儴鍒? 瀛愮被琚彲浠xtends.Property 瀵?java綾葷殑灞炴с?br />3)璧勬簮鐨凱roperty寮曠敤鐨凷earch Engine meta-data.
娉ㄦ剰: id涓虹被鏍囪瘑.
<compass-core-mapping package="org.springside.bookstore.domain"><contract alias="product"> <id name="id"/> <property name="name"> <meta-data>${springside.name}</meta-data> </property> <property name="descn"> <meta-data>${springside.descn}</meta-data> </property> </contract>
<class name="Book" alias="${springside.book}" extends="product"> <property name="author"> <meta-data>${springside.author}</meta-data> </property>
<property name="publisher"> <meta-data>${springside.publisher}</meta-data> </property> </class></compass-core-mapping>
瀹氫箟Compass閰嶇疆鏂囦歡(*.cfg.xml). Compass 鑷姩鏇挎崲OSEM瀵瑰簲鐨勫師鏁版嵁(Common meta-data)鏍囩鐨勫? ${...} 寰堝儚ant.
綆鍗曠殑鍙互鐞嗚В涓篴lias瀵瑰簲涓鴻〃,meta-data涓篶olumn.鍏蜂綋闃愯堪,璇瘋compass reference(Chapter 3. Search Engine)
<compass-core-meta-data><meta-data-group id="springside" displayName="SpringSide Book Meta Data">
<description>SpringSide Meta Data</description> <uri>http://compass/springside</uri><alias id="book" displayName="Book"> <description>Book alias</description> <uri>http://compass/springside/alias/book</uri> <name>book</name> </alias>
<meta-data id="name" displayName="Name"> <uri>http://compass/springside/name</uri> <name>descn</name> </meta-data>
<meta-data id="descn" displayName="Description"> <uri>http://compass/springside/descn</uri> <name>descn</name> </meta-data>
<meta-data id="author" displayName="Author"> <description>The author of a book</description> <uri>http://compass/springside/author</uri> <name>author</name> </meta-data>
<meta-data id="publisher" displayName="Publisher"> <description>The publisher of a book</description> <uri>http://compass/springside/publisher</uri> <name>publisher</name> </meta-data> </meta-data-group>
</compass-core-meta-data>聽
<beans>
<bean id="compass" class="org.compass.spring.LocalCompassBean"> <property name="resourceLocations"> <list> <value>classpath:compass-springside.cmd.xml</value> <value>classpath:compass-springside.cpm.xml</value> </list>
</property> <property name="compassSettings"> <props> <prop key="compass.engine.connection">file://${user.home}/springside/compass</prop> <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop> </props> </property>
<property name="transactionManager" ref="transactionManager"/> </bean><bean id="hibernateGpsDevice" class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice">
<property name="name"> <value>hibernateDevice</value> </property> <property name="sessionFactory" ref="sessionFactory"/> </bean><bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
<property name="compass" ref="compass"/> <property name="gpsDevices"> <list> <ref local="hibernateGpsDevice"/> </list> </property> </bean> </beans>
resourceLocations: 瑁呭叆compass鐨勯厤緗枃浠?*.cmd.xml,*.cpm.xml
compass.engine.connection: 灝辨槸绱㈠紩鍋氬瓨鏀劇殑鏈満鏂囦歡鐨勮礬寰?鎼滅儲寮曟搸涔熸槸鏍規(guī)嵁鏈満鏂囦歡绱㈠紩,榪涜鏌ヨ.
hibernateGpsDevice: 娉ㄥ叆sessionFactory.
The Hibernate Gps Device:鐢℉ibernate 3 浜嬩歡緋葷粺,鎻愰珮鏀寔Real Time Data Mirroring.緇廐iberante鐨勬暟鎹敼鍙樿嚜鍔ㄨ鍙嶅皠鍒扮儲寮曢噷闈?
<bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController">
<property name="compassGps"><ref bean="compassGps"/></property>
<property name="indexView"><value>/admin/indexBook.jsp</value></property>
<property name="indexResultsView"><value>/admin/indexBook.jsp</value></property>
</bean>
<bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController">
<property name="compass"><ref bean="compass"/></property>
<property name="searchView"><value>/home/top.jsp</value></property>
<property name="searchResultsView"><value>/home/searchBook.jsp</value></property>
<property name="pageSize"><value>3</value></property>
</bean>
璋冪敤鍒癷ndexBookController,瀹屾垚绱㈠紩閲嶅緩,璋冪敤鍒皊earchBookController,瀹屾垚鎼滅儲.
鎼滅儲欏甸潰 :<INPUT type="text" size="20" name="query" class="search" value="">
<div class="left"><c:if test="${! empty searchResults}">
鑰楁椂錛?<c:out value="${searchResults.searchTime}" />ms
<c:if test="${empty searchResults.hits}">
錛屾病鏈夋壘鍒扮鍚堟潯浠剁殑鍥句功錛岃紜繚宸插湪綆$悊鍚庡彴寤虹珛绱㈠紩銆?br /></c:if>
<c:forEach var="hit" items="${searchResults.hits}">
<c:choose>
<c:when test="${hit.alias == 'book'}">
<p><a
href="<c:url value="/bookstore.do?action=bookDetail&id=${hit.data.id}"/>">
銆?lt;c:out value="${hit.data.name}" />銆?</a> <br />
浣滆咃細<c:out value="${hit.data.author}" /> 鍑虹増紺撅細 <c:out
value="${hit.data.publisher}" /></p>
</c:when>
</c:choose>
</c:forEach>