--- /dev/null
+package org.apache.lucene.queryParser.analyzing;
+
+/**
+ * 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.
+ */
+
+import java.io.Reader;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.ASCIIFoldingFilter;
+import org.apache.lucene.analysis.LowerCaseFilter;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.standard.StandardFilter;
+import org.apache.lucene.analysis.standard.StandardTokenizer;
+import org.apache.lucene.queryParser.ParseException;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.Version;
+
+/**
+ * @version $Revision$, $Date$
+ */
+public class TestAnalyzingQueryParser extends LuceneTestCase {
+
+ private Analyzer a;
+
+ private String[] wildcardInput;
+ private String[] wildcardExpected;
+ private String[] prefixInput;
+ private String[] prefixExpected;
+ private String[] rangeInput;
+ private String[] rangeExpected;
+ private String[] fuzzyInput;
+ private String[] fuzzyExpected;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ wildcardInput = new String[] { "übersetzung über*ung",
+ "Mötley Cr\u00fce Mötl?* Crü?", "Renée Zellweger Ren?? Zellw?ger" };
+ wildcardExpected = new String[] { "ubersetzung uber*ung", "motley crue motl?* cru?",
+ "renee zellweger ren?? zellw?ger" };
+
+ prefixInput = new String[] { "übersetzung übersetz*",
+ "Mötley Crüe Mötl* crü*", "René? Zellw*" };
+ prefixExpected = new String[] { "ubersetzung ubersetz*", "motley crue motl* cru*",
+ "rene? zellw*" };
+
+ rangeInput = new String[] { "[aa TO bb]", "{Anaïs TO Zoé}" };
+ rangeExpected = new String[] { "[aa TO bb]", "{anais TO zoe}" };
+
+ fuzzyInput = new String[] { "Übersetzung Übersetzung~0.9",
+ "Mötley Crüe Mötley~0.75 Crüe~0.5",
+ "Renée Zellweger Renée~0.9 Zellweger~" };
+ fuzzyExpected = new String[] { "ubersetzung ubersetzung~0.9",
+ "motley crue motley~0.75 crue~0.5", "renee zellweger renee~0.9 zellweger~0.5" };
+
+ a = new ASCIIAnalyzer();
+ }
+
+ public void testWildCardQuery() throws ParseException {
+ for (int i = 0; i < wildcardInput.length; i++) {
+ assertEquals("Testing wildcards with analyzer " + a.getClass() + ", input string: "
+ + wildcardInput[i], wildcardExpected[i], parseWithAnalyzingQueryParser(wildcardInput[i], a));
+ }
+ }
+
+ public void testPrefixQuery() throws ParseException {
+ for (int i = 0; i < prefixInput.length; i++) {
+ assertEquals("Testing prefixes with analyzer " + a.getClass() + ", input string: "
+ + prefixInput[i], prefixExpected[i], parseWithAnalyzingQueryParser(prefixInput[i], a));
+ }
+ }
+
+ public void testRangeQuery() throws ParseException {
+ for (int i = 0; i < rangeInput.length; i++) {
+ assertEquals("Testing ranges with analyzer " + a.getClass() + ", input string: "
+ + rangeInput[i], rangeExpected[i], parseWithAnalyzingQueryParser(rangeInput[i], a));
+ }
+ }
+
+ public void testFuzzyQuery() throws ParseException {
+ for (int i = 0; i < fuzzyInput.length; i++) {
+ assertEquals("Testing fuzzys with analyzer " + a.getClass() + ", input string: "
+ + fuzzyInput[i], fuzzyExpected[i], parseWithAnalyzingQueryParser(fuzzyInput[i], a));
+ }
+ }
+
+ private String parseWithAnalyzingQueryParser(String s, Analyzer a) throws ParseException {
+ AnalyzingQueryParser qp = new AnalyzingQueryParser(TEST_VERSION_CURRENT, "field", a);
+ org.apache.lucene.search.Query q = qp.parse(s);
+ return q.toString("field");
+ }
+
+}
+
+final class ASCIIAnalyzer extends org.apache.lucene.analysis.Analyzer {
+ public ASCIIAnalyzer() {
+ }
+
+ @Override
+ public TokenStream tokenStream(String fieldName, Reader reader) {
+ TokenStream result = new StandardTokenizer(LuceneTestCase.TEST_VERSION_CURRENT, reader);
+ result = new StandardFilter(Version.LUCENE_31, result);
+ result = new ASCIIFoldingFilter(result);
+ result = new LowerCaseFilter(LuceneTestCase.TEST_VERSION_CURRENT, result);
+ return result;
+ }
+}