1 /* 2 * Copyright 2008 FatWire Corporation. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.fatwire.gst.foundation.facade.search; 18 19 import com.fatwire.cs.core.search.data.ResultRow; 20 import com.fatwire.cs.core.search.query.Operation; 21 import com.fatwire.cs.core.search.query.QueryExpression; 22 23 import junit.framework.TestCase; 24 25 /** 26 * Simple test utility for running a search against the standard FSII search respository. 27 * Not yet set up to follow a proper test framework. Must be called from within a JSP scriptlet for now. 28 * 29 * @author Tony Field 30 * @since Feb 15, 2011 31 */ 32 public final class FSIIRepositoryTest extends TestCase { 33 // x and y and z and (a or b) 34 // x is between condition 35 // the rest are equals conditions 36 /* 37 FSIIAbstract 38 FSIIBody 39 FSIIByline 40 FSIICategoryName 41 FSIIDescriptionAttr 42 FSIIHeadline 43 FSIIImage 44 FSIIKeyword 45 FSIINameAttr 46 FSIIPostDate 47 FSIISubheadline 48 FSIITemplateAttr 49 FSIITitle 50 51 52 <% 53 SimpleSearchEngine lucene = SimpleSearchEngine.getInstance("lucene"); 54 QueryExpression qry = lucene.newQuery("FSIIBody", Operation.CONTAINS, "device"); 55 qry = qry.and("createdby", Operation.CONTAINS, "admin"); 56 List<Date> dates = new ArrayList<Date>(); 57 dates.add(new Date(0L)); 58 dates.add(new Date(911120000019828L)); 59 //dates.add(new Date(2L)); 60 //qry = qry.and("createddate", Operation.RANGE, dates); 61 //qry = qry.and("FSIIByline", Operation.EQUALS, "Barton P. Fooman"); 62 63 StringBuilder sb = new StringBuilder("Search results:"); 64 sb.append("<table>"); 65 sb.append("<tr><th>id</th><th>name</th><th>relevance</th></tr>"); 66 for (ResultRow row : lucene.search(qry, "Content_C")) { 67 sb.append("<tr>"); 68 sb.append("<td>").append(row.getIndexData("id").getData()).append("</td>"); 69 sb.append("<td>").append(row.getIndexData("name").getData()).append("</td>"); 70 sb.append("<td>").append(row.getRelevance()).append("</td>"); 71 sb.append("</tr>"); 72 } 73 sb.append("</table>"); 74 %><%=sb%> 75 76 77 78 */ 79 80 public void testAndQuery() { 81 // getTestOutput(); 82 // todo: low priority: make this into an actual test. 83 } 84 85 public String getTestOutput() { 86 87 SimpleSearchEngine lucene = SimpleSearchEngine.getInstance("lucene"); 88 QueryExpression qry = lucene.newQuery("FSIIByline", Operation.CONTAINS, "Barton"); 89 qry.and("FSIITitle", Operation.CONTAINS, "About"); 90 91 StringBuilder sb = new StringBuilder("Search results:"); 92 sb.append("<table>"); 93 sb.append("<tr><th>id</th><th>name</th><th>relevance</th></tr>"); 94 for (ResultRow row : lucene.search(qry, "Content_C")) { 95 sb.append("<tr>"); 96 sb.append("<td>").append(row.getIndexData("id").getData()).append("</td>"); 97 sb.append("<td>").append(row.getIndexData("name").getData()).append("</td>"); 98 sb.append("<td>").append(row.getRelevance()).append("</td>"); 99 sb.append("</tr>"); 100 } 101 sb.append("</table>"); 102 return sb.toString(); 103 } 104 105 }