Hi, thanks man for your tips. This certainly should be place in the tutorials.
However, how do I customize search queries using Appfuse & Compass. Any particular pattern you've done? On 9/11/07, gederer <[EMAIL PROTECTED]> wrote: > > > Hi, > > I've been messing about with Compass and AppFuse 2.0. The below borrows > heavily from Chris Barham's previous post on the subject. But, it uses the > most recent version of Compass, Compass annotations, and, of course, > AppFuse > 2. > > Comments welcome! > > Cheers, > > Greg > > > Setting Up Compass with AppFuse 2 > ================== > > 1. Download Compass with dependencies: > > http://www.opensymphony.com/compass/download.action > > 2. Add Compass jars to local m2 repo > > Compass does not currently have a Maven2 repository (that I could > find). > So, > you'll need to install compass in your local repository by hand. Use > the > following command to install the compass jars locally: > > mvn install:install-file > -Dfile=/tmp/compass-1.2GA-SNAPSHOT/dist/compass.jar -DgroupId=opensymphony > -DartifactId=compass -Dversion=1.2GA-SNAPSHOT -Dpackaging=jar > > 3. Add Compass dependencies to pom.xml > > Under <dependencies> > > <dependency> > <groupId>opensymphony</groupId> > <artifactId>compass</artifactId> > <version>${compass.version}</version> > </dependency> > <dependency> > <groupId>org.apache.lucene</groupId> > <artifactId>lucene-core</artifactId> > <version>${lucene.version}</version> > </dependency> > <dependency> > <groupId>org.apache.lucene</groupId> > <artifactId>lucene-analyzers</artifactId> > <version>${lucene.version}</version> > </dependency> > <dependency> > <groupId>org.apache.lucene</groupId> > <artifactId>lucene-highlighter</artifactId> > <version>${lucene.version}</version> > </dependency> > <dependency> > <groupId>org.apache.lucene</groupId> > <artifactId>lucene-queries</artifactId> > <version>${lucene.version}</version> > </dependency> > <dependency> > <groupId>org.apache.lucene</groupId> > <artifactId>lucene-snowball</artifactId> > <version>${lucene.version}</version> > </dependency> > > Under <properties> > > <compass.version>1.2GA-SNAPSHOT</compass.version> > <lucene.version>2.2.0</lucene.version> > > 4. Annotate your POJO > > @Entity > @Table(name="toy") > @Searchable(alias="toy") > public class Toy extends BaseObject > { > private static final long serialVersionUID = > -2935222440301604395L; > > @Id > @GeneratedValue(strategy = GenerationType.AUTO) > @SearchableId > private Long id; > > @SearchableProperty(name = "name") > private String name; > > @Column(columnDefinition="text") > @SearchableProperty(name="description") > private String description; > > ... > } > > See http://docs.codehaus.org/display/TRAILS/Using+search for more > details on Compass annotations. > > 5. Add Compass Spring beans to applicationContext-service.xml: > > <!-- COMPASS START --> > <bean id="compass" class="org.compass.spring.LocalCompassBean"> > <property name="classMappings"> > <list> > <!-- Add POJOS here --> > <value>com.firstworldtoys.model.Toy</value> > </list> > </property> > <property name="compassSettings"> > <props> > <prop > key="compass.engine.connection > ">file:///Users/gregederer/dev/fwt/compass</prop> > <prop > key="compass.transaction.factory"> > org.compass.spring.transaction.SpringSyncTransactionFactory</prop> > <!-- snowball analyzer provides stemming (so 'monkey' gets > 'monkeys', too) --> > <prop key="compass.engine.analyzer.default.type > ">snowball</prop> > <prop key="compass.engine.analyzer.default.name > ">English</prop> > </props> > </property> > <property name="transactionManager" ref="transactionManager" /> > </bean> > > <bean id="hibernateGpsDevice" > class="org.compass.spring.device.hibernate.dep.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 bean="compass" /> > </property> > <property name="gpsDevices"> > <list> > <bean > class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper"> > <property name="gpsDevice" ref="hibernateGpsDevice" /> > </bean> > </list> > </property> > </bean> > <!-- COMPASS END --> > > 6. Add JSP for Compass rebuild index > > <%@ include file="/common/taglibs.jsp"%> > <P> > <H2>Compass Index</H2> > <P>Use the Index button to index the database using Compass::Gps. > The operation will delete the current index and reindex the database > based on the mappings and devices defined in the Compass::Gps > configuration context. > <FORM method="POST" action="<c:url > value="/reindex.html"/>"><spring:bind > path="command.doIndex"> > <INPUT type="hidden" name="doIndex" value="true" /> > </spring:bind> <INPUT type="submit" value="Index" /></FORM> > <c:if test="${! empty indexResults}"> > <P>Indexing took: <c:out value="${indexResults.indexTime}" />ms. > > </c:if> > <P> > > 7. Add JSP for Compass search > > <%@ include file="/common/taglibs.jsp"%> > <title>Search</title> > Search: > <form method="GET"> > <p> > <spring:bind path="command.query"> > <INPUT type="text" size="20" name="query" value="<c:out > value="${status.value}"/>" /> > </spring:bind> > </p> > <p> > <input type="submit" value="Search" /> > </p> > </form> > <c:if test="${! empty searchResults}"> > <p>Search took <c:out value="${searchResults.searchTime}" /> > ms</p> > <table border="2"> > <tr> > <th>SCORE</th> > <th>TYPE</th> > <th>NAME</th> > <th>ID</th> > <th>DESCRIPTION</th> > </tr> > <c:forEach var="hit" items="${searchResults.hits}"> > <tr> > <td><fmt:formatNumber type="percent" value="${hit.score}" > /></td> > <td><c:out value="${hit.alias}" /></td> > <td><c:out value="${hit.data.name}" /></td> > <td><c:out value="${hit.data.id}" /></td> > <td><c:out value="${hit.data.description}" /></td> > </tr> > </c:forEach> > </table> > </c:if> > > 8. Add Compass controllers to dispatcher-servlet.xml > > <!-- ==== COMPASS SEARCH CONTROLLER ==== --> > <bean id="searchController" > class="org.compass.spring.web.mvc.CompassSearchController"> > <property name="compass"> > <ref bean="compass" /> > </property> > <property name="searchView"> > <value>searchView</value> > </property> > <property name="searchResultsView"> > <value>searchResultsView</value> > </property> > <property name="pageSize"> > <value>10</value> > </property> > </bean> > <!-- ==== COMPASS INDEX CONTROLLER ==== --> > <bean id="indexController" > class="org.compass.spring.web.mvc.CompassIndexController"> > <property name="compassGps"> > <ref bean="compassGps" /> > </property> > <property name="indexView"> > <value>reindexView</value> > </property> > <property name="indexResultsView"> > <value>reindexResultsView</value> > </property> > </bean> > > 9. Add URL mappings to dispatcher-servlet.xml > > <bean id="urlMapping" > class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> > <property name="mappings"> > <value> > ... > /search.html=searchController > /reindex.html=indexController > </value> > </property> > <property name="order" value="0" /> > </bean> > > 10. Add ResourceBundleViewResolver to dispatcher-servlet.xml > > <bean id="rbViewResolver" > > class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> > <property name="basename"><value>views</value></property> > <property name="order"><value>0</value></property> > </bean> > > 11. Create a views.properties file in src/main/resources with the > following > contents > > searchView.class=org.springframework.web.servlet.view.JstlView > searchView.url=/WEB-INF/pages/search.jsp > > > searchResultsView.class=org.springframework.web.servlet.view.JstlView > searchResultsView.url=/WEB-INF/pages/search.jsp > > reindexView.class=org.springframework.web.servlet.view.JstlView > reindexView.url=/WEB-INF/pages/reindex.jsp > > > reindexResultsView.class=org.springframework.web.servlet.view.JstlView > reindexResultsView.url=/WEB-INF/pages/reindex.jsp > -- > View this message in context: > http://www.nabble.com/Mini-Tutorial%3A-Compass-and-AppFuse-2.0-tf4420567s2369.html#a12608860 > Sent from the AppFuse - User mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- /fadhli
