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