Author: natalia Date: Sat Oct 13 19:47:06 2007 New Revision: 584478 URL: http://svn.apache.org/viewvc?rev=584478&view=rev Log: Test for full text search on DOM nodes
Added: xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/ xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java (with props) Added: xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java?rev=584478&view=auto ============================================================================== --- xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java (added) +++ xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java Sat Oct 13 19:47:06 2007 @@ -0,0 +1,190 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $Id$ + */ + +package org.apache.xindice.core.query.ftsearch; + +import junit.framework.TestCase; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.apache.xindice.xml.dom.DOMParser; +import org.apache.xindice.core.data.NodeSet; +import org.apache.lucene.analysis.SimpleAnalyzer; + +/** + * Tests for full text search on DOM nodes + * + * @version $Revision$, $Date$ + * + */ +public class SearcherTest extends TestCase { + String str = "<?xml version=\"1.0\"?>\n" + + "<doc>" + + " <chapter>" + + " <title>Chapter</title>\n" + + " <content>" + + " Invokes the underlying method represented by this Method object, on the specified \n" + + " object with the specified parameters. Individual parameters are automatically \n" + + " unwrapped to match primitive formal parameters, and both primitive and reference \n" + + " parameters are subject to method invocation conversions as necessary.\n" + + " </content>\n" + + " <title>Paragraph</title>\n" + + " <content>" + + " If the underlying method is an instance method, it is invoked using dynamic method \n" + + " lookup as documented in The Java Language Specification, Second Edition, section \n" + + " 15.12.4.4; in particular, overriding based on the runtime type of the target object \n" + + " will occur. \n" + + " </content>\n" + + " <title>Part</title>\n" + + " <content>" + + " If the method completes normally, the value it returns is returned to the caller of \n" + + " invoke; if the value has a primitive type, it is first appropriately wrapped in an \n" + + " object. If the underlying method return type is void, the invocation returns null.\n" + + " </content>" + + " </chapter>" + + "</doc>"; + Document doc; + NodeList list; + public void setUp() throws Exception { + doc = DOMParser.toDocument(str); + list = doc.getDocumentElement().getElementsByTagName("content"); + } + + public void testTermQuery() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("underlying"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 3); + } + + public void testBooleanQuery() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("underlying AND automatically"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 1); + } + + public void testPhraseQuery() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("\"underlying method\""); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 2); + } + + public void testWildcardQuery1() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("invoke?"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 2); + } + + public void testWildcardQuery2() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("invoke*"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 3); + } + + public void testWildcardQuery3() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("test*"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 0); + } + + public void testWildcardQuery4() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("s*d"); // matches "second" and "specified" + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 2); + } + + public void testProximityQuery() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("\"java edition\"~5"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 1); + } + + public void testFuzzyQuery() throws Exception { + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("on~0.2"); // matches "on" and "in" + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 3); + } + + public void testRangeQuery() throws Exception { + doc = DOMParser.toDocument(str); + list = doc.getDocumentElement().getElementsByTagName("title"); + + Searcher searcher = new Searcher(list, new SimpleAnalyzer()); + NodeSet res = searcher.search("{chapter TO part}"); + + int count = 0; + while (res.hasMoreNodes()) { + count++; + res.getNextNode(); + } + assertTrue(count == 1); + } +} Propchange: xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/ftsearch/SearcherTest.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date