diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AbstractAlfrescoSolrTests.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AbstractAlfrescoSolrTests.java index 5a129f8cf..6cb66dde6 100644 --- a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AbstractAlfrescoSolrTests.java +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AbstractAlfrescoSolrTests.java @@ -98,6 +98,7 @@ public abstract class AbstractAlfrescoSolrTests implements SolrTestFiles, Alfre *

*/ protected static TestHarness.LocalRequestFactory lrf; + protected static String testNodeRef; protected static String testBaseFolderNodeRef; protected AlfrescoSolrDataModel dataModel = AlfrescoSolrDataModel.getInstance(); diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoFTSQParserPluginTest.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoFTSQParserPluginTest.java deleted file mode 100644 index ca3e4d2e3..000000000 --- a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoFTSQParserPluginTest.java +++ /dev/null @@ -1,1342 +0,0 @@ -///* -// * Copyright (C) 2005-2014 Alfresco Software Limited. -// * -// * This file is part of Alfresco -// * -// * Alfresco is free software: you can redistribute it and/or modify -// * it under the terms of the GNU Lesser General Public License as published by -// * the Free Software Foundation, either version 3 of the License, or -// * (at your option) any later version. -// * -// * Alfresco is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU Lesser General Public License for more details. -// * -// * You should have received a copy of the GNU Lesser General Public License -// * along with Alfresco. If not, see . -// */ -// -//package org.alfresco.solr.query; -// -//import org.alfresco.model.ContentModel; -//import org.alfresco.service.namespace.QName; -//import org.alfresco.solr.AlfrescoSolrDataModel; -//import org.alfresco.solr.AlfrescoSolrTestCaseJ4; -//import org.alfresco.solr.SolrInformationServer; -//import org.alfresco.util.SearchLanguageConversion; -//import org.apache.lucene.util.LuceneTestCase; -//import org.alfresco.repo.search.adaptor.lucene.QueryConstants; -//import org.apache.solr.SolrTestCaseJ4; -//import org.junit.Before; -//import org.junit.BeforeClass; -//import org.junit.Test; -// -//import java.util.Locale; -// -// -//@LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) -//@SolrTestCaseJ4.SuppressSSL -//public class AlfrescoFTSQParserPluginTest extends AlfrescoSolrTestCaseJ4 implements QueryConstants { -// -// @BeforeClass -// public static void beforeClass() throws Exception { -// initAlfrescoCore("solrconfig-afts.xml", "schema-afts.xml"); -// Thread.sleep(30000); -// loadTestSet(); -// } -// -// @Override -// @Before -// public void setUp() throws Exception { -// // if you override setUp or tearDown, you better callf -// // the super classes version -// super.setUp(); -// //clearIndex(); -// //assertU(commit()); -// } -// -// /* -// @Test -// public void testAftsQueries() throws Exception { -// -// //assertU(delQ("*:*")); -// //assertU(commit()); -// -// String[] doc = {"id", "1", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc)); -// assertU(commit()); -// String[] doc1 = {"id", "2", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc1)); -// -// String[] doc2 = {"id", "3", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc2)); -// assertU(commit()); -// String[] doc3 = {"id", "4", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc3)); -// -// String[] doc4 = {"id", "5", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc4)); -// assertU(commit()); -// -// String[] doc5 = {"id", "6", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; -// assertU(adoc(doc5)); -// assertU(commit()); -// -// -// ModifiableSolrParams params = new ModifiableSolrParams(); -// params.add("q", "t1:YYYY"); -// params.add("qt", "/afts"); -// params.add("start", "0"); -// params.add("rows", "6"); -// SolrServletRequest req = areq(params, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}]}"); -// assertQ(req, "*[count(//doc)=6]"); -// -// } -//*/ -// @Test -// public void dataChecks() throws Exception { -// /******** Check the root node **********/ -// assertAQuery("PATH:\"/\"", 1); -// assertAQuery("PATH:\"/.\"", 1); -// -// /******* Check paths ********************/ -// assertAQuery("PATH:\"/cm:one\"", 1); -// assertAQuery("PATH:\"/cm:two\"", 1); -// assertAQuery("PATH:\"/cm:three\"", 1); -// assertAQuery("PATH:\"/cm:four\"", 1); -// assertAQuery("PATH:\"/cm:eight-0\"", 1); -// assertAQuery("PATH:\"/cm:five\"", 0); -// assertAQuery("PATH:\"/cm:one/cm:one\"", 0); -// assertAQuery("PATH:\"/cm:one/cm:two\"", 0); -// assertAQuery("PATH:\"/cm:two/cm:one\"", 0); -// assertAQuery("PATH:\"/cm:two/cm:two\"", 0); -// assertAQuery("PATH:\"/cm:one/cm:five\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:six\"", 1); -// assertAQuery("PATH:\"/cm:two/cm:seven\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:eight-1\"", 1); -// assertAQuery("PATH:\"/cm:two/cm:eight-2\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:eight-2\"", 0); -// assertAQuery("PATH:\"/cm:two/cm:eight-1\"", 0); -// assertAQuery("PATH:\"/cm:two/cm:eight-0\"", 0); -// assertAQuery("PATH:\"/cm:one/cm:eight-0\"", 0); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:nine\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:ten\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:eleven\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen\"", 1); -// assertAQuery( -// "PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen/cm:fourteen\"", 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen/cm:common\"", -// 1); -// assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:common\"", 1); -// assertAQuery("PATH:\"/cm:*\"", 5); -// assertAQuery("PATH:\"/cm:*/cm:*\"", 6); -// assertAQuery("PATH:\"/cm:*/cm:five\"", 1); -// assertAQuery("PATH:\"/cm:*/cm:*/cm:*\"", 6); -// assertAQuery("PATH:\"/cm:one/cm:*\"", 4); -// assertAQuery("PATH:\"/cm:*/cm:five/cm:*\"", 5); -// assertAQuery("PATH:\"/cm:one/cm:*/cm:nine\"", 1); -// assertAQuery("PATH:\"/*\"", 5); -// assertAQuery("PATH:\"/*/*\"", 6); -// assertAQuery("PATH:\"/*/cm:five\"", 1); -// assertAQuery("PATH:\"/*/*/*\"", 6); -// assertAQuery("PATH:\"/cm:one/*\"", 4); -// assertAQuery("PATH:\"/*/cm:five/*\"", 5); -// assertAQuery("PATH:\"/cm:one/*/cm:nine\"", 1); -// assertAQuery("PATH:\"//.\"", 16); -// assertAQuery("PATH:\"//*\"", 15); -// assertAQuery("PATH:\"//*/.\"", 15); -// assertAQuery("PATH:\"//*/./.\"", 15); -// assertAQuery("PATH:\"//./*\"", 15); -// assertAQuery("PATH:\"//././*/././.\"", 15); -// assertAQuery("PATH:\"//cm:common\"", 1); -// assertAQuery("PATH:\"/one//common\"", 1); -// assertAQuery("PATH:\"/one/five//*\"", 7); -// assertAQuery("PATH:\"/one/five//.\"", 8); -// assertAQuery("PATH:\"/one//five/nine\"", 1); -// assertAQuery("PATH:\"/one//thirteen/fourteen\"", 1); -// assertAQuery("PATH:\"/one//thirteen/fourteen/.\"", 1); -// assertAQuery("PATH:\"/one//thirteen/fourteen//.\"", 1); -// assertAQuery("PATH:\"/one//thirteen/fourteen//.//.\"", 1); -// -// assertAQuery("PATH:\"/one\"", 1); -// assertAQuery("PATH:\"/two\"", 1); -// assertAQuery("PATH:\"/three\"", 1); -// assertAQuery("PATH:\"/four\"", 1); -// -// /******** Check qNames ***************/ -// assertAQuery("QNAME:\"nine\"", 1); -// assertAQuery("PRIMARYASSOCTYPEQNAME:\"cm:contains\"", 11); -// assertAQuery("PRIMARYASSOCTYPEQNAME:\"sys:children\"", 4); -// assertAQuery("ASSOCTYPEQNAME:\"cm:contains\"", 11); -// assertAQuery("ASSOCTYPEQNAME:\"sys:children\"", 5); -// -// /******** check type ****************/ -// assertAQuery("TYPE:\"" + testType.toString() + "\"", 1); -// assertAQuery("TYPE:\"" + testType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); -// assertAQuery("EXACTTYPE:\"" + testType.toString() + "\"", 1); -// assertAQuery("EXACTTYPE:\"" + testType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); -// assertAQuery("TYPE:\"" + testSuperType.toString() + "\"", 13); -// assertAQuery("TYPE:\"" + testSuperType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 13); -// assertAQuery("TYPE:\"" + ContentModel.TYPE_CONTENT.toString() + "\"", 1); -// assertAQuery("TYPE:\"cm:content\"", 1); -// assertAQuery("TYPE:\"cm:content0\"", 0); -// assertAQuery("TYPE:\"cm:CONTENT\"", 1); -// assertAQuery("TYPE:\"cm:CONTENT1\"", 0); -// assertAQuery("TYPE:\"CM:CONTENT\"", 1); -// assertAQuery("TYPE:\"CM:CONTENT1\"", 0); -// assertAQuery("TYPE:\"CONTENT\"", 1); -// assertAQuery("TYPE:\"CONTENT1\"", 0); -// assertAQuery("TYPE:\"content\"", 1); -// assertAQuery("TYPE:\"content0\"", 0); -// assertAQuery("ASPECT:\"flubber\"", 0); -// assertAQuery("TYPE:\"" + ContentModel.TYPE_THUMBNAIL.toString() + "\"", -// 1); -// assertAQuery("TYPE:\"" + ContentModel.TYPE_THUMBNAIL.toString() -// + "\" TYPE:\"" + ContentModel.TYPE_CONTENT.toString() + "\"", 2); -// assertAQuery("EXACTTYPE:\"" + testSuperType.toString() + "\"", 12); -// assertAQuery("EXACTTYPE:\"" + testSuperType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 12); -// assertAQuery("ASPECT:\"" + testAspect.toString() + "\"", 1); -// assertAQuery("ASPECT:\"" + testAspect.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); -// assertAQuery("EXACTASPECT:\"" + testAspect.toString() + "\"", 1); -// assertAQuery("EXACTASPECT:\"" + testAspect.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); -// -// -// /*********** Check data type **********/ -// assertAQuery("d\\:double:\"5.6\"", 1); -// assertAQuery("d\\:content:\"fox\"", 1); -// assertAQuery("d\\:content:\"fox\"", 1, Locale.US, null, null); -// -// -// /*********** Check text **************/ -// assertAQuery("TEXT:fox AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", 1); -// assertAQuery("TEXT:fox @cm\\:name:fox", 1); -// assertAQuery("d\\:content:fox d\\:text:fox", 1); -// assertAQuery("TEXT:fo AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", 0); -// -// assertAQuery("TEXT:\"the\"", 1); -// assertAQuery("TEXT:\"and\"", 1); -// -// //TODO fix this assert -// //assertAQuery("TEXT:\"over the lazy\"", 1); -// // Depends on stop words being removed .... which depends on the configuration -// //assertAQuery("TEXT:\"over a lazy\"", 1); -// -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":*a*", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":*A*", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":\"*a*\"", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":\"*A*\"", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":*s*", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":*S*", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":\"*s*\"", 1); -// assertAQuery("\\@" -// + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, -// "text-indexed-stored-tokenised-atomic").toString()) + ":\"*S*\"", 1); -// assertAQuery("TEXT:*A*", 1); -// assertAQuery("TEXT:\"*a*\"", 1); -// assertAQuery("TEXT:\"*A*\"", 1); -// assertAQuery("TEXT:*a*", 1); -// assertAQuery("TEXT:*Z*", 1); -// assertAQuery("TEXT:\"*z*\"", 1); -// assertAQuery("TEXT:\"*Z*\"", 1); -// assertAQuery("TEXT:*z*", 1); -// assertAQuery("TEXT:laz*", 1); -// assertAQuery("TEXT:laz~", 1); -// assertAQuery("TEXT:la?y", 1); -// assertAQuery("TEXT:?a?y", 1); -// assertAQuery("TEXT:*azy", 1); -// assertAQuery("TEXT:*az*", 1); -// -// // Accents -// -// assertAQuery("TEXT:\"\u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF\"", 1); -// assertAQuery("TEXT:\"aeidnouy\"", 1); -// -// /**************** Check text *********************/ -// -// assertAQuery("TEXT:\"fox\"", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ":\"fox\"", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ".mimetype:\"text/plain\"", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ".locale:\"en_GB\"", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ".locale:en_*", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ".locale:e*_GB", 1); -// assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) -// + ".size:\"298\"", 1); -// -// //TODO Fix these tests -// -// assertAQuery("TEXT:\"fox\"", 0, null, new String[] { "@" -// + ContentModel.PROP_NAME.toString() }, null); -// assertAQuery("TEXT:\"fox\"", 1, null, new String[] { -// "@" + ContentModel.PROP_NAME.toString(), "@" + ContentModel.PROP_CONTENT.toString() }, null); -// assertAQuery("TEXT:\"cabbage\"", 15, null, new String[] { "@" -// + orderText.toString() }, null); -// assertAQuery("TEXT:\"cab*\"", 15, null, -// new String[] { "@" + orderText.toString() }, null); -// assertAQuery("TEXT:\"*bage\"", 15, null, -// new String[] { "@" + orderText.toString() }, null); -// assertAQuery("TEXT:\"*ba*\"", 15, null, -// new String[] { "@" + orderText.toString() }, null); -// assertAQuery("TEXT:cabbage", 15, null, -// new String[] { "@" + orderText.toString() }, null); -// assertAQuery("TEXT:*cab*", 15, Locale.ENGLISH, new String[] { "@" -// + orderText.toString() }, null); -// assertAQuery("TEXT:*bage", 15, null, -// new String[] { "@" + orderText.toString() }, null); -// -//// assertAQuery("TEXT:dabbage~0.3", 15, null, new String[] { "@" -//// + orderText.toString() }, null); -// -// assertAQuery("TEXT:\"alfresco\"", 1); -// assertAQuery("TEXT:\"alfresc?\"", 1); -// assertAQuery("TEXT:\"alfres??\"", 1); -// assertAQuery("TEXT:\"alfre???\"", 1); -// assertAQuery("TEXT:\"alfr????\"", 1); -// assertAQuery("TEXT:\"alf?????\"", 1); -// assertAQuery("TEXT:\"al??????\"", 1); -// assertAQuery("TEXT:\"a???????\"", 1); -// assertAQuery("TEXT:\"????????\"", 1); -// assertAQuery("TEXT:\"a??re???\"", 1); -// assertAQuery("TEXT:\"?lfresco\"", 1); -// assertAQuery("TEXT:\"??fresco\"", 1); -// assertAQuery("TEXT:\"???resco\"", 1); -// assertAQuery("TEXT:\"????esco\"", 1); -// assertAQuery("TEXT:\"?????sco\"", 1); -// assertAQuery("TEXT:\"??????co\"", 1); -// assertAQuery("TEXT:\"???????o\"", 1); -// assertAQuery("TEXT:\"???res?o\"", 1); -// assertAQuery("TEXT:\"????e?co\"", 1); -// assertAQuery("TEXT:\"????e?c?\"", 1); -// assertAQuery("TEXT:\"???re???\"", 1); -// -// assertAQuery("TEXT:\"alfresc*\"", 1); -// assertAQuery("TEXT:\"alfres*\"", 1); -// assertAQuery("TEXT:\"alfre*\"", 1); -// assertAQuery("TEXT:\"alfr*\"", 1); -// assertAQuery("TEXT:\"alf*\"", 1); -// assertAQuery("TEXT:\"al*\"", 1); -// assertAQuery("TEXT:\"a*\"", 1); -// assertAQuery("TEXT:\"a****\"", 1); -// assertAQuery("TEXT:\"*lfresco\"", 1); -// assertAQuery("TEXT:\"*fresco\"", 1); -// assertAQuery("TEXT:\"*resco\"", 1); -// assertAQuery("TEXT:\"*esco\"", 1); -// assertAQuery("TEXT:\"*sco\"", 1); -// assertAQuery("TEXT:\"*co\"", 1); -// assertAQuery("TEXT:\"*o\"", 1); -// assertAQuery("TEXT:\"****lf**sc***\"", 1); -// // Lucene wildcard bug matches when it should not .... -// //assertAQuery("TEXT:\"*??*lf**sc***\"", 0); -// assertAQuery("TEXT:\"??lf**sc***\"", 0); -// assertAQuery("TEXT:\"alfresc*tutorial\"", 0); -// assertAQuery("TEXT:\"alf* tut*\"", 1); -// assertAQuery("TEXT:\"*co *al\"", 1); -// -// /********* check mltext ************/ -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfresco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfresc?\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfres??\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfre???\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfr????\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alf?????\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"al??????\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"a???????\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"????????\"", 1); -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"a??re???\"", 1); -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"?lfresco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"??fresco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"???resco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"????esco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"?????sco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"??????co\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"???????o\"", 1); -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"???resco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"???res?o\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"????e?co\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"????e?c?\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"???re???\"", 1); -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfresc*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfres*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfre*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alfr*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"alf*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"al*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"a*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"a*****\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*lfresco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*fresco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*resco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*esco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*sco\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*co\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*o\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"****lf**sc***\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*??*lf**sc***\"", 0); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"Alfresc*tutorial\"", 0); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"Alf* tut*\"", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) -// + ":\"*co *al\"", 1); -// -// QName mlQName = QName.createQName(TEST_NAMESPACE, "ml"); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":and", 0); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":\"and\"", 0); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1); -// -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, Locale.UK, -// null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, -// Locale.ENGLISH, null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banane", 1, -// Locale.FRENCH, null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":香蕉", 1, -// Locale.CHINESE, null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banaan", 1, -// new Locale("nl"), null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banane", 1, -// Locale.GERMAN, null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":μπανάνα", 1, -// new Locale("el"), null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, -// Locale.ITALIAN, null, null); -// -// //TODO fix test -// /* -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":�?ナナ", 1, new Locale( -// "ja"), null, null); -// */ -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":바나나", 1, new Locale( -// "ko"), null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, -// new Locale("pt"), null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":банан", 1, new Locale( -// "ru"), null, null); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":plátano", 1, -// new Locale("es"), null, null); -// -// /*********** Check ranges **************/ -// -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[a TO b]", 1); -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[a TO \uFFFF]", 14); -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[* TO b]", 2); -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[\u0000 TO b]", 2); -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[d TO \uFFFF]", 12); -// assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[d TO *]", 12); -// -// /*********** Check non-field ************/ -// -// assertAQuery("TEXT:fox", 1); -// assertAQuery("TEXT:fo*", 1); -// assertAQuery("TEXT:f*x", 1); -// assertAQuery("TEXT:*ox", 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":fox", -// 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":fo*", -// 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":f*x", -// 1); -// assertAQuery( -// "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":*ox", -// 1); -// assertAQuery( -// "@" -// + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT -// .toPrefixString(dataModel.getNamespaceDAO())) + ":fox", 1); -// assertAQuery( -// "@" -// + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT -// .toPrefixString(dataModel.getNamespaceDAO())) + ":fo*", 1); -// assertAQuery( -// "@" -// + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT -// .toPrefixString(dataModel.getNamespaceDAO())) + ":f*x", 1); -// assertAQuery( -// "@" -// + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT -// .toPrefixString(dataModel.getNamespaceDAO())) + ":*ox", 1); -// -// /************** Check null and unset *************/ -// -// assertAQuery("ISUNSET:\"" -// + QName.createQName(TEST_NAMESPACE, "null").toString() + "\"", 0); -// assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, -// "null").toString() + "\"", 1); -// assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, -// "null").toString() + "\"", 1); -// assertAQuery("ISNOTNULL:\"" -// + QName.createQName(TEST_NAMESPACE, "null").toString() + "\"", 0); -// -// assertAQuery("ISUNSET:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 0); -// assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, -// "path-ista").toString() + "\"", 0); -// assertAQuery("ISNOTNULL:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 1); -// assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 1); -// -// assertAQuery("ISUNSET:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 0); -// assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, -// "aspectProperty").toString() + "\"", 0); -// assertAQuery("ISNOTNULL:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 1); -// assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 1); -// -// -// /***** Check internal fields ******/ -// -// final Long aclId = new Long(1); -// -// for (int i = 1; i < 16; i++) -// { -// Long dbId = new Long(i); -// String id = SearchLanguageConversion.escapeLuceneQuery(AlfrescoSolrDataModel.getNodeDocumentId(AlfrescoSolrDataModel.DEFAULT_TENANT, aclId, dbId)); -// assertQ(areq(params("q", FIELD_SOLR4_ID + ":" + id, "qt", "/afts"), null), -// "*[count(//doc)=1]"); -// } -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_NODE), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_ACL), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_ACL_TX), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_TX), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PARENT + ":\"" + testNodeRef + "\""), null), -// "*[count(//doc)=4]"); -// -// // AbstractLuceneQueryParser.FIELD_LINKASPECT is not used for SOLR -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ANCESTOR + ":\"" + testNodeRef + "\""), null), -// "*[count(//doc)=10]"); -// -// // AbstractLuceneQueryParser.FIELD_ISCONTAINER is not used for SOLR -// // AbstractLuceneQueryParser.FIELD_ISCATEGORY is not used for SOLR -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:one\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:two\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:three\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:four\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:five\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:six\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:seven\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-0\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-1\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-2\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:nine\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:ten\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eleven\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:twelve\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:thirteen\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:fourteen\""), null), -// "*[count(//doc)=2]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:fifteen\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:common\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:link\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:one\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:two\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:three\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:four\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:five\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:six\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:seven\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-0\""), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-1\""), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-2\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:nine\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:ten\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eleven\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:twelve\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:thirteen\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:fourteen\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:fifteen\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:common\""), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:link\""), null), -// "*[count(//doc)=0]"); -// -// // AbstractLuceneQueryParser.FIELD_ISROOT is not used in SOLR -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCTYPEQNAME + ":\"" -// + ContentModel.ASSOC_CHILDREN.toPrefixString(dataModel.getNamespaceDAO()) + "\""), null), -// "*[count(//doc)=4]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ISNODE + ":T"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ASSOCTYPEQNAME + ":\"" -// + ContentModel.ASSOC_CHILDREN.toPrefixString(dataModel.getNamespaceDAO()) + "\""), null), -// "*[count(//doc)=5]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYPARENT + ":\"" + testNodeRef + "\""), null), -// "*[count(//doc)=2]"); -// -// // TYPE and ASPECT is covered in other tests -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_FTSSTATUS + ":\"New\""), null), -// "*[count(//doc)=2]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":1"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":2"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":3"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":4"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":5"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":6"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":7"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":8"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":9"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":10"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":11"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":12"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":13"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":14"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":15"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":16"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":17"), null), -// "*[count(//doc)=0]"); -// -// // testQueryByHandler(report, core, "/afts", AbstractLuceneQueryParser.FIELD_DBID+":*", 16, null, null, (String) -// // null); -// // testQueryByHandler(report, core, "/afts", AbstractLuceneQueryParser.FIELD_DBID+":[3 TO 4]", 2, null, null, -// // null); -// -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_TXID + ":1"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INTXID + ":1"), null), -// "*[count(//doc)=17]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ACLTXID + ":1"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INACLTXID + ":1"), null), -// "*[count(//doc)=2]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INACLTXID + ":2"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ACLID + ":1"), null), -// "*[count(//doc)=17]"); -// -// -// //TODO fix tests -// /* -// assertQ(areq(params("rows", "20", "qt", "/native", "q", FIELD_TXCOMMITTIME + ":*"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_READER + ":\"GROUP_EVERYONE\""), null), -// "*[count(//doc)=16]"); -// -// testQueryByHandler(report, core, "/native", FIELD_TXCOMMITTIME + ":*", 1, null, null, null, null, -// null, (String) null); -// -// testQueryByHandler(report, core, "/native", FIELD_ACLTXCOMMITTIME + ":*", 1, null, null, null, -// null, null, (String) null); -// */ -// -// /* -// -// // AbstractLuceneQueryParser.FIELD_EXCEPTION_MESSAGE -// // addNonDictionaryField(AbstractLuceneQueryParser.FIELD_EXCEPTION_STACK -// -// -// testQueryByHandler(report, core, "/afts", FIELD_READER + ":\"GROUP_EVERYONE\"", 16, null, null, -// null, null, null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":andy", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":bob", 1, null, null, null, null, null, -// (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":cid", 1, null, null, null, null, null, -// (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":dave", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":eoin", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":fred", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":gail", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":hal", 1, null, null, null, null, null, -// (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":ian", 1, null, null, null, null, null, -// (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":jake", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":kara", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":loon", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":mike", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":noodle", 1, null, null, null, null, -// null, (String) null); -// testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":ood", 1, null, null, null, null, null, -// (String) null); -// -// testQueryByHandler(report, core, "/afts", FIELD_PARENT_ASSOC_CRC + ":0", 16, null, null, null, -// null, null, (String) null); -// -// */ -// -// /********************TEST FTS **************************/ -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy and -dog"), null), -// "*[count(//doc)=15]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|lazy and |dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|eager and |dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|lazy and |wolf"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|eager and |wolf"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy or -dog"), null), -// "*[count(//doc)=15]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-eager or -dog"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy or -wolf"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-eager or -wolf"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and not dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy not dog"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and !dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy !dog"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and -dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy -dog"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm_content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "d:content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "=cm_content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "~cm_content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:big OR cm:content:lazy"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:big AND cm:content:lazy"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "{http://www.alfresco.org/model/content/1.0}content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "=lazy"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:big OR @cm:content:lazy"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:big AND @cm:content:lazy"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@{http://www.alfresco.org/model/content/1.0}content:\"lazy\""), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "~@cm:content:big OR ~@cm:content:lazy"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown * quick"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown * dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(0) dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(1) dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(2) dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(3) dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(4) dog"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(5) dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(6) dog"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(\"lazy\")"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy and -dog)"), null), -// "*[count(//doc)=15]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy and dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and -dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|lazy and |dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|eager and |dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|lazy and |wolf)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|eager and |wolf)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy or -dog)"), null), -// "*[count(//doc)=15]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-eager or -dog)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy or -wolf)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-eager or -wolf)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and not dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q","TEXT:(lazy not dog)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and !dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy !dog)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and -dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy -dog)"), null), -// "*[count(//doc)=16]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm_content:(\"lazy\")"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:(big OR lazy)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:(big AND lazy)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "{http://www.alfresco.org/model/content/1.0}content:(\"lazy\")"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(=lazy)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(big) OR @cm:content:(lazy)"), null), -// "*[count(//doc)=1]"); -// -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(big) AND @cm:content:(lazy)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@{http://www.alfresco.org/model/content/1.0}content:(\"lazy\")"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(~big OR ~lazy)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown * quick)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown * dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(0) dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(1) dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(2) dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(3) dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(4) dog)"), null), -// "*[count(//doc)=0]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(5) dog)"), null), -// "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(6) dog)"), null), -// "*[count(//doc)=1]"); -// -// //Mimetype -// assertAQueryHasNumberOfDocs("cm:content.mimetype:\"text/plain\"", 1); -// assertAQueryHasNumberOfDocs("cm_content.mimetype:\"text/plain\"", 1); -// assertAQueryHasNumberOfDocs("@cm_content.mimetype:\"text/plain\"", 1); -// assertAQueryHasNumberOfDocs("content.mimetype:\"text/plain\"", 1); -// assertAQueryHasNumberOfDocs("@{http://www.alfresco.org/model/content/1.0}content.mimetype:\"text/plain\"", 1); -// assertAQueryHasNumberOfDocs("{http://www.alfresco.org/model/content/1.0}content.mimetype:\"text/plain\"", 1); -// -// //Numbers -// QName qname = QName.createQName(TEST_NAMESPACE, "float\\-ista"); -// -// assertAQueryHasNumberOfDocs(qname + ":3.40", 1); -// assertAQueryHasNumberOfDocs(qname + ":3..4", 1); -// assertAQueryHasNumberOfDocs(qname + ":3..3.39", 0);; -// assertAQueryHasNumberOfDocs(qname + ":3..3.40", 1); -// assertAQueryHasNumberOfDocs(qname + ":3.41..3.9", 0);; -// assertAQueryHasNumberOfDocs(qname + ":3.40..3.9", 1); -// -// assertAQueryHasNumberOfDocs(qname + ":[3 TO 4]", 1); -// assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.39]", 0);; -// assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.4]", 1); -// assertAQueryHasNumberOfDocs(qname + ":[3.41 TO 4]", 0);; -// assertAQueryHasNumberOfDocs(qname + ":[3.4 TO 4]", 1); -// assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.4>", 0);; -// assertAQueryHasNumberOfDocs(qname + ":<3.4 TO 4]", 0);; -// assertAQueryHasNumberOfDocs(qname + ":<3.4 TO 3.4>", 0);; -// -// assertAQueryHasNumberOfDocs(qname + ":(3.40)", 1); -// assertAQueryHasNumberOfDocs(qname + ":(3..4)", 1); -// assertAQueryHasNumberOfDocs(qname + ":(3..3.39)", 0);; -// assertAQueryHasNumberOfDocs(qname + ":(3..3.40)", 1); -// assertAQueryHasNumberOfDocs(qname + ":(3.41..3.9)", 0);; -// assertAQueryHasNumberOfDocs(qname + ":(3.40..3.9)", 1); -// -// assertAQueryHasNumberOfDocs(qname + ":([3 TO 4])", 1); -// assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.39])", 0);; -// assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.4])", 1); -// assertAQueryHasNumberOfDocs(qname + ":([3.41 TO 4])", 0);; -// assertAQueryHasNumberOfDocs(qname + ":([3.4 TO 4])", 1); -// assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.4>)", 0);; -// assertAQueryHasNumberOfDocs(qname + ":(<3.4 TO 4])", 0);; -// assertAQueryHasNumberOfDocs(qname + ":(<3.4 TO 3.4>)", 0);; -// -// assertAQueryHasNumberOfDocs("test:float_x002D_ista:3.40", 1); -// -// //Test Lazy -// assertAQueryHasNumberOfDocs("lazy", 1); -// assertAQueryHasNumberOfDocs("laz*", 1); -// assertAQueryHasNumberOfDocs("l*y", 1); -// assertAQueryHasNumberOfDocs("l??y", 1); -// assertAQueryHasNumberOfDocs("?az?", 1); -// assertAQueryHasNumberOfDocs("*zy", 1); -// -// assertAQueryHasNumberOfDocs("\"lazy\"", 1); -// assertAQueryHasNumberOfDocs("\"laz*\"", 1); -// assertAQueryHasNumberOfDocs("\"l*y\"", 1); -// assertAQueryHasNumberOfDocs("\"l??y\"", 1); -// assertAQueryHasNumberOfDocs("\"?az?\"", 1); -// assertAQueryHasNumberOfDocs("\"*zy\"", 1); -// -// assertAQueryHasNumberOfDocs("cm:content:lazy", 1); -// assertAQueryHasNumberOfDocs("cm:content:laz*", 1); -// assertAQueryHasNumberOfDocs("cm:content:l*y", 1); -// assertAQueryHasNumberOfDocs("cm:content:l??y", 1); -// assertAQueryHasNumberOfDocs("cm:content:?az?", 1); -// assertAQueryHasNumberOfDocs("cm:content:*zy", 1); -// -// assertAQueryHasNumberOfDocs("cm:content:\"lazy\"", 1); -// assertAQueryHasNumberOfDocs("cm:content:\"laz*\"", 1); -// assertAQueryHasNumberOfDocs("cm:content:\"l*y\"", 1); -// assertAQueryHasNumberOfDocs("cm:content:\"l??y\"", 1); -// assertAQueryHasNumberOfDocs("cm:content:\"?az?\"", 1); -// assertAQueryHasNumberOfDocs("cm:content:\"*zy\"", 1); -// -// assertAQueryHasNumberOfDocs("cm:content:(lazy)", 1); -// assertAQueryHasNumberOfDocs("cm:content:(laz*)", 1); -// assertAQueryHasNumberOfDocs("cm:content:(l*y)", 1); -// assertAQueryHasNumberOfDocs("cm:content:(l??y)", 1); -// assertAQueryHasNumberOfDocs("cm:content:(?az?)", 1); -// assertAQueryHasNumberOfDocs("cm:content:(*zy)", 1); -// -// assertAQueryHasNumberOfDocs("cm:content:(\"lazy\")", 1); -// assertAQueryHasNumberOfDocs("cm:content:(\"laz*\")", 1); -// assertAQueryHasNumberOfDocs("cm:content:(\"l*y\")", 1); -// assertAQueryHasNumberOfDocs("cm:content:(\"l??y\")", 1); -// assertAQueryHasNumberOfDocs("cm:content:(\"?az?\")", 1); -// assertAQueryHasNumberOfDocs("cm:content:(\"*zy\")", 1); -// -// assertAQueryHasNumberOfDocs("lazy^2 dog^4.2", 1); -// assertAQueryHasNumberOfDocs("lazy~0.7", 1); -// assertAQueryHasNumberOfDocs("cm:content:laxy~0.7", 1); -// assertAQueryHasNumberOfDocs("laxy~0.7", 1); -// assertAQueryHasNumberOfDocs("=laxy~0.7", 1); -// assertAQueryHasNumberOfDocs("~laxy~0.7", 1); -// -// assertAQueryHasNumberOfDocs("\"quick fox\"~0", 0); -// assertAQueryHasNumberOfDocs("\"quick fox\"~1", 1); -// assertAQueryHasNumberOfDocs("\"quick fox\"~2", 1); -// assertAQueryHasNumberOfDocs("\"quick fox\"~3", 1); -// -// assertAQueryHasNumberOfDocs("\"fox quick\"~0", 0); -// assertAQueryHasNumberOfDocs("\"fox quick\"~1", 0); -// assertAQueryHasNumberOfDocs("\"fox quick\"~2", 1); -// assertAQueryHasNumberOfDocs("\"fox quick\"~3", 1); -// -// assertAQueryHasNumberOfDocs("lazy", 1); -// assertAQueryHasNumberOfDocs("-lazy", 15); -// assertAQueryHasNumberOfDocs("lazy -lazy", 16); -// assertAQueryHasNumberOfDocs("lazy^20 -lazy", 16); -// assertAQueryHasNumberOfDocs("lazy^20 -lazy^20", 16); -// -// assertAQueryHasNumberOfDocs("cm:content:lazy",1); -//// assertAQueryHasNumberOfDocs("ANDY:lazy", 1); -// assertAQueryHasNumberOfDocs("content:lazy", 1); -// assertAQueryHasNumberOfDocs("PATH:\"//.\"", 16); -// assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\"", 0); -// assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\" -TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"", 15); -// assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\" AND -TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"", 0); -// -// assertAQueryHasNumberOfDocs("(brown *(6) dog)", 1); -// assertAQueryHasNumberOfDocs("TEXT:(brown *(6) dog)", 1); -// assertAQueryHasNumberOfDocs("\"//.\"", 0); -// assertAQueryHasNumberOfDocs("cm:content:brown", 1); -// -// //assertAQueryHasNumberOfDocs("ANDY:brown", 1); -// //assertAQueryHasNumberOfDocs("andy:brown", 1); -// // testQueryByHandler(report, core, "/afts", "ANDY", "brown", 1, null, (String) null); -// // testQueryByHandler(report, core, "/afts", "andy", "brown", 1, null, (String) null); -// -// assertAQueryHasNumberOfDocs("modified:*", 2); -// assertAQueryHasNumberOfDocs("modified:[MIN TO NOW]", 2); -// -// assertAQueryHasNumberOfDocs("TYPE:" + testType.toString(), 1); -//// testQueryByHandler(report, core, "/afts", "TYPE:" + testType.toString(), 0, null, null, null, null, null, (ContentStream)null, "mimetype():document"); -// assertAQueryHasNumberOfDocs("TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1); -//// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1, null, null, null, null, null, (ContentStream)null, "mimetype():document"); -//// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 0, null, null, null, null, null, (ContentStream)null, "contentSize():[0 TO 100]"); -//// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1, null, null, null, null, null, (ContentStream)null, "contentSize():[100 TO 1000]"); -// -// assertAQueryHasNumberOfDocs("modified:[NOW/DAY-1DAY TO NOW/DAY+1DAY]", 2); -// assertAQueryHasNumberOfDocs("modified:[NOW/DAY-1DAY TO *]", 2); -// assertAQueryHasNumberOfDocs("modified:[* TO NOW/DAY+1DAY]", 2); -// assertAQueryHasNumberOfDocs("modified:[* TO *]", 2); -// -// // Synonym -// // 1 in text - 1 in query -// assertAQueryHasNumberOfDocs("quick", 1); -// assertAQueryHasNumberOfDocs("quick", 1); -// // 3 words in test - 1..3 in query -// assertAQueryHasNumberOfDocs("brown AND fox AND jumped", 1); -////Not working -//// assertAQueryHasNumberOfDocs("leaping AND reynard", 1); -//// assertAQueryHasNumberOfDocs("springer", 1); -// // 1 word in text 1..2 in query -// assertAQueryHasNumberOfDocs("lazy", 1); -//// assertAQueryHasNumberOfDocs("bone AND idle", 1); -// -// // Cross language support and tokenisation part and full. -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); -// -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); -// -// /* -// testQueryByHandler(report, core, "/afts", "PATH:\"//.\"", 16, "DBID desc", new Integer[] { 16, 15, 14, 13, 12, 11, -// 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }, null, null, null, (String) null); -// -// // testQueryByHandler(report, core, "/afts", "PATH", "\"//.\"", 16, null, (String) null); -// */ -// -// //Auth code goes here -// } -// -// private void assertAQueryHasNumberOfDocs(String query, int num) -// { -// assertQ(areq(params("rows", "20", "qt", "/afts", "q", query), null), "*[count(//doc)="+num+"]"); -// } -// -// -//} \ No newline at end of file diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/AFTSQParserPluginSuite.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/AFTSQParserPluginSuite.java new file mode 100644 index 000000000..445e79986 --- /dev/null +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/AFTSQParserPluginSuite.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.solr.query.afts; + +import org.alfresco.solr.AbstractAlfrescoSolrTests; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; +@RunWith(value = Suite.class) +@SuiteClasses({ + LoadAFTSTestData.class, + TestsAlfrescoFTSQParserPlugin.class +}) +/** + * Test AFTS query and parsing plugin. + * The suite works by loading all the test data using LoadAFTSTestData. + * This step load the data directly into the harness. + * Once the data load completes the test executes the TestsAlfrescoFTSQParserPlugin + * which contains all the tests. + * + * @author Michael Suzuki + * + */ +public class AFTSQParserPluginSuite extends AbstractAlfrescoSolrTests +{ + @BeforeClass + public static void beforeClass() throws Exception + { + initAlfrescoCore("solrconfig-afts.xml", "schema-afts.xml"); + Thread.sleep(30000); + } + +} diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/LoadTestData.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/LoadAFTSTestData.java similarity index 91% rename from search-services/alfresco-solr/src/test/java/org/alfresco/solr/LoadTestData.java rename to search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/LoadAFTSTestData.java index afb180034..e952cc18f 100644 --- a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/LoadTestData.java +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/LoadAFTSTestData.java @@ -16,14 +16,11 @@ * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . */ -package org.alfresco.solr; +package org.alfresco.solr.query.afts; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_DOC_TYPE; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_INTXID; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_SOLR4_ID; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_TXCOMMITTIME; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_TXID; -import static org.alfresco.repo.search.adaptor.lucene.QueryConstants.FIELD_VERSION; +import static org.alfresco.solr.AlfrescoSolrUtils.addNode; +import static org.alfresco.solr.AlfrescoSolrUtils.addStoreRoot; +import static org.alfresco.solr.AlfrescoSolrUtils.createGUID; import java.io.IOException; import java.util.Calendar; @@ -42,52 +39,23 @@ import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.cmr.repository.datatype.Duration; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; -import org.alfresco.solr.AlfrescoSolrTestCaseJ4.SolrServletRequest; +import org.alfresco.solr.AbstractAlfrescoSolrTests; +import org.alfresco.solr.AlfrecsoSolrConstants; +import org.alfresco.solr.AlfrescoSolrDataModel; import org.alfresco.solr.client.ContentPropertyValue; import org.alfresco.solr.client.MLTextPropertyValue; import org.alfresco.solr.client.MultiPropertyValue; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; -import org.apache.solr.common.SolrInputDocument; import org.apache.solr.core.SolrCore; -import org.apache.solr.update.AddUpdateCommand; -import org.apache.solr.update.CommitUpdateCommand; -import org.junit.BeforeClass; import org.junit.Test; - -import static org.alfresco.solr.AlfrescoSolrUtils.*; /** * Load test data as part of legacy test. * @author Michael Suzuki * */ -public class LoadTestData extends AbstractAlfrescoSolrTests +public class LoadAFTSTestData extends AbstractAlfrescoSolrTests implements AlfrecsoSolrConstants { - private static int orderTextCount = 0; - private static Date orderDate = new Date(); - private static String[] orderNames = new String[] { "one", "two", "three", "four", "five", "six", "seven", "eight", - "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen" }; - - // Spanish- Eng, French-English, Swedish German, English - private static String[] orderLocalisedNames = new String[] { "chalina", "curioso", "llama", "luz", "peach", "péché", - "pêche", "sin", "\u00e4pple", "banan", "p\u00e4ron", "orange", "rock", "rôle", "rose", "filler" }; - - private static String[] orderLocaliseMLText_de = new String[] { "Arg", "Ärgerlich", "Arm", "Assistent", "Aßlar", - "Assoziation", "Udet", "Übelacker", "Uell", "Ülle", "Ueve", "Üxküll", "Uffenbach", "apple", "and", - "aardvark" }; - - private static String[] orderLocaliseMLText_fr = new String[] { "cote", "côte", "coté", "côté", "rock", "lemur", - "lemonade", "lemon", "kale", "guava", "cheese", "beans", "bananana", "apple", "and", "aardvark" }; - - private static String[] orderLocaliseMLText_en = new String[] { "zebra", "tiger", "rose", "rôle", "rock", "lemur", - "lemonade", "lemon", "kale", "guava", "cheese", "beans", "bananana", "apple", "and", "aardvark" }; - - private static String[] orderLocaliseMLText_es = new String[] { "radio", "ráfaga", "rana", "rápido", "rastrillo", "arroz", - "campo", "chihuahua", "ciudad", "limonada", "llaves", "luna", "bananana", "apple", "and", "aardvark" }; - @BeforeClass - public static void beforeClass() throws Exception { - initAlfrescoCore("solrconfig-afts.xml", "schema-afts.xml"); - } @Test public void loadTestSet() throws IOException { // Root @@ -102,6 +70,8 @@ public class LoadTestData extends AbstractAlfrescoSolrTests NodeRef n01NodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); + testNodeRef = n01NodeRef.toString(); + QName n01QName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "one"); ChildAssociationRef n01CAR = new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, n01QName, n01NodeRef, true, 0); @@ -427,46 +397,6 @@ public class LoadTestData extends AbstractAlfrescoSolrTests + n13QName + "/" + n15QName, "/" + n02QName.toString() + "/" + n13QNameLink + "/" + n14QName }, n15NodeRef, true); } - private static void addStoreRoot(SolrCore core, - AlfrescoSolrDataModel dataModel, - NodeRef rootNodeRef, - int txid, - int dbid, - int acltxid, - int aclid) throws IOException - { - SolrServletRequest solrQueryRequest = null; - try - { - solrQueryRequest = new SolrServletRequest(core, null); - AddUpdateCommand addDocCmd = new AddUpdateCommand(solrQueryRequest); - addDocCmd.overwrite = true; - addDocCmd.solrDoc = createDocument(dataModel, new Long(txid), new Long(dbid), rootNodeRef, - ContentModel.TYPE_STOREROOT, new QName[]{ContentModel.ASPECT_ROOT}, null, null, new Long(aclid), - new String[]{"/"}, "system", null, null); - core.getUpdateHandler().addDoc(addDocCmd); - addAcl(solrQueryRequest, core, dataModel, acltxid, aclid, 0, 0); - - AddUpdateCommand txCmd = new AddUpdateCommand(solrQueryRequest); - txCmd.overwrite = true; - SolrInputDocument input = new SolrInputDocument(); - String id = AlfrescoSolrDataModel.getTransactionDocumentId(new Long(txid)); - input.addField(FIELD_SOLR4_ID, id); - input.addField(FIELD_VERSION, "0"); - input.addField(FIELD_TXID, txid); - input.addField(FIELD_INTXID, txid); - input.addField(FIELD_TXCOMMITTIME, (new Date()).getTime()); - input.addField(FIELD_DOC_TYPE, SolrInformationServer.DOC_TYPE_TX); - txCmd.solrDoc = input; - core.getUpdateHandler().addDoc(txCmd); - - core.getUpdateHandler().commit(new CommitUpdateCommand(solrQueryRequest, false)); - } - finally - { - solrQueryRequest.close(); - } - } private static Map getOrderProperties() { double orderDoubleCount = -0.11d + orderTextCount * ((orderTextCount % 2 == 0) ? 0.1d : -0.1d); @@ -533,4 +463,25 @@ public class LoadTestData extends AbstractAlfrescoSolrTests orderTextCount++; return testProperties; } + private static int orderTextCount = 0; + private static Date orderDate = new Date(); + private static String[] orderNames = new String[] { "one", "two", "three", "four", "five", "six", "seven", "eight", + "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen" }; + + // Spanish- Eng, French-English, Swedish German, English + private static String[] orderLocalisedNames = new String[] { "chalina", "curioso", "llama", "luz", "peach", "péché", + "pêche", "sin", "\u00e4pple", "banan", "p\u00e4ron", "orange", "rock", "rôle", "rose", "filler" }; + + private static String[] orderLocaliseMLText_de = new String[] { "Arg", "Ärgerlich", "Arm", "Assistent", "Aßlar", + "Assoziation", "Udet", "Übelacker", "Uell", "Ülle", "Ueve", "Üxküll", "Uffenbach", "apple", "and", + "aardvark" }; + + private static String[] orderLocaliseMLText_fr = new String[] { "cote", "côte", "coté", "côté", "rock", "lemur", + "lemonade", "lemon", "kale", "guava", "cheese", "beans", "bananana", "apple", "and", "aardvark" }; + + private static String[] orderLocaliseMLText_en = new String[] { "zebra", "tiger", "rose", "rôle", "rock", "lemur", + "lemonade", "lemon", "kale", "guava", "cheese", "beans", "bananana", "apple", "and", "aardvark" }; + + private static String[] orderLocaliseMLText_es = new String[] { "radio", "ráfaga", "rana", "rápido", "rastrillo", "arroz", + "campo", "chihuahua", "ciudad", "limonada", "llaves", "luna", "bananana", "apple", "and", "aardvark" }; } diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/TestsAlfrescoFTSQParserPlugin.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/TestsAlfrescoFTSQParserPlugin.java new file mode 100644 index 000000000..f8e2614a5 --- /dev/null +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/afts/TestsAlfrescoFTSQParserPlugin.java @@ -0,0 +1,1324 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.solr.query.afts; + +import java.util.Locale; + +import org.alfresco.model.ContentModel; +import org.alfresco.repo.search.adaptor.lucene.QueryConstants; +import org.alfresco.service.namespace.QName; +import org.alfresco.solr.AbstractAlfrescoSolrTests; +import org.alfresco.solr.AlfrescoSolrDataModel; +import org.alfresco.solr.SolrInformationServer; +import org.alfresco.util.SearchLanguageConversion; +import org.apache.lucene.util.LuceneTestCase; +import org.apache.solr.SolrTestCaseJ4; +import org.junit.Test; + + +@LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) +@SolrTestCaseJ4.SuppressSSL +public class TestsAlfrescoFTSQParserPlugin extends AbstractAlfrescoSolrTests implements QueryConstants { + + + /* + @Test + public void testAftsQueries() throws Exception { + + //assertU(delQ("*:*")); + //assertU(commit()); + + String[] doc = {"id", "1", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc)); + assertU(commit()); + String[] doc1 = {"id", "2", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc1)); + + String[] doc2 = {"id", "3", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc2)); + assertU(commit()); + String[] doc3 = {"id", "4", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc3)); + + String[] doc4 = {"id", "5", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc4)); + assertU(commit()); + + String[] doc5 = {"id", "6", "content@s___t@{http://www.alfresco.org/model/content/1.0}content", "YYYY"}; + assertU(adoc(doc5)); + assertU(commit()); + + + ModifiableSolrParams params = new ModifiableSolrParams(); + params.add("q", "t1:YYYY"); + params.add("qt", "/afts"); + params.add("start", "0"); + params.add("rows", "6"); + SolrServletRequest req = areq(params, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}]}"); + assertQ(req, "*[count(//doc)=6]"); + + } +*/ + @Test + public void dataChecks() throws Exception { + /******** Check the root node **********/ + assertAQuery("PATH:\"/\"", 1); + assertAQuery("PATH:\"/.\"", 1); + + /******* Check paths ********************/ + assertAQuery("PATH:\"/cm:one\"", 1); + assertAQuery("PATH:\"/cm:two\"", 1); + assertAQuery("PATH:\"/cm:three\"", 1); + assertAQuery("PATH:\"/cm:four\"", 1); + assertAQuery("PATH:\"/cm:eight-0\"", 1); + assertAQuery("PATH:\"/cm:five\"", 0); + assertAQuery("PATH:\"/cm:one/cm:one\"", 0); + assertAQuery("PATH:\"/cm:one/cm:two\"", 0); + assertAQuery("PATH:\"/cm:two/cm:one\"", 0); + assertAQuery("PATH:\"/cm:two/cm:two\"", 0); + assertAQuery("PATH:\"/cm:one/cm:five\"", 1); + assertAQuery("PATH:\"/cm:one/cm:six\"", 1); + assertAQuery("PATH:\"/cm:two/cm:seven\"", 1); + assertAQuery("PATH:\"/cm:one/cm:eight-1\"", 1); + assertAQuery("PATH:\"/cm:two/cm:eight-2\"", 1); + assertAQuery("PATH:\"/cm:one/cm:eight-2\"", 0); + assertAQuery("PATH:\"/cm:two/cm:eight-1\"", 0); + assertAQuery("PATH:\"/cm:two/cm:eight-0\"", 0); + assertAQuery("PATH:\"/cm:one/cm:eight-0\"", 0); + assertAQuery("PATH:\"/cm:one/cm:five/cm:nine\"", 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:ten\"", 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:eleven\"", 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve\"", 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen\"", 1); + assertAQuery( + "PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen/cm:fourteen\"", 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:thirteen/cm:common\"", + 1); + assertAQuery("PATH:\"/cm:one/cm:five/cm:twelve/cm:common\"", 1); + assertAQuery("PATH:\"/cm:*\"", 5); + assertAQuery("PATH:\"/cm:*/cm:*\"", 6); + assertAQuery("PATH:\"/cm:*/cm:five\"", 1); + assertAQuery("PATH:\"/cm:*/cm:*/cm:*\"", 6); + assertAQuery("PATH:\"/cm:one/cm:*\"", 4); + assertAQuery("PATH:\"/cm:*/cm:five/cm:*\"", 5); + assertAQuery("PATH:\"/cm:one/cm:*/cm:nine\"", 1); + assertAQuery("PATH:\"/*\"", 5); + assertAQuery("PATH:\"/*/*\"", 6); + assertAQuery("PATH:\"/*/cm:five\"", 1); + assertAQuery("PATH:\"/*/*/*\"", 6); + assertAQuery("PATH:\"/cm:one/*\"", 4); + assertAQuery("PATH:\"/*/cm:five/*\"", 5); + assertAQuery("PATH:\"/cm:one/*/cm:nine\"", 1); + assertAQuery("PATH:\"//.\"", 16); + assertAQuery("PATH:\"//*\"", 15); + assertAQuery("PATH:\"//*/.\"", 15); + assertAQuery("PATH:\"//*/./.\"", 15); + assertAQuery("PATH:\"//./*\"", 15); + assertAQuery("PATH:\"//././*/././.\"", 15); + assertAQuery("PATH:\"//cm:common\"", 1); + assertAQuery("PATH:\"/one//common\"", 1); + assertAQuery("PATH:\"/one/five//*\"", 7); + assertAQuery("PATH:\"/one/five//.\"", 8); + assertAQuery("PATH:\"/one//five/nine\"", 1); + assertAQuery("PATH:\"/one//thirteen/fourteen\"", 1); + assertAQuery("PATH:\"/one//thirteen/fourteen/.\"", 1); + assertAQuery("PATH:\"/one//thirteen/fourteen//.\"", 1); + assertAQuery("PATH:\"/one//thirteen/fourteen//.//.\"", 1); + + assertAQuery("PATH:\"/one\"", 1); + assertAQuery("PATH:\"/two\"", 1); + assertAQuery("PATH:\"/three\"", 1); + assertAQuery("PATH:\"/four\"", 1); + + /******** Check qNames ***************/ + assertAQuery("QNAME:\"nine\"", 1); + assertAQuery("PRIMARYASSOCTYPEQNAME:\"cm:contains\"", 11); + assertAQuery("PRIMARYASSOCTYPEQNAME:\"sys:children\"", 4); + assertAQuery("ASSOCTYPEQNAME:\"cm:contains\"", 11); + assertAQuery("ASSOCTYPEQNAME:\"sys:children\"", 5); + + /******** check type ****************/ + assertAQuery("TYPE:\"" + testType.toString() + "\"", 1); + assertAQuery("TYPE:\"" + testType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); + assertAQuery("EXACTTYPE:\"" + testType.toString() + "\"", 1); + assertAQuery("EXACTTYPE:\"" + testType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); + assertAQuery("TYPE:\"" + testSuperType.toString() + "\"", 13); + assertAQuery("TYPE:\"" + testSuperType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 13); + assertAQuery("TYPE:\"" + ContentModel.TYPE_CONTENT.toString() + "\"", 1); + assertAQuery("TYPE:\"cm:content\"", 1); + assertAQuery("TYPE:\"cm:content0\"", 0); + assertAQuery("TYPE:\"cm:CONTENT\"", 1); + assertAQuery("TYPE:\"cm:CONTENT1\"", 0); + assertAQuery("TYPE:\"CM:CONTENT\"", 1); + assertAQuery("TYPE:\"CM:CONTENT1\"", 0); + assertAQuery("TYPE:\"CONTENT\"", 1); + assertAQuery("TYPE:\"CONTENT1\"", 0); + assertAQuery("TYPE:\"content\"", 1); + assertAQuery("TYPE:\"content0\"", 0); + assertAQuery("ASPECT:\"flubber\"", 0); + assertAQuery("TYPE:\"" + ContentModel.TYPE_THUMBNAIL.toString() + "\"", + 1); + assertAQuery("TYPE:\"" + ContentModel.TYPE_THUMBNAIL.toString() + + "\" TYPE:\"" + ContentModel.TYPE_CONTENT.toString() + "\"", 2); + assertAQuery("EXACTTYPE:\"" + testSuperType.toString() + "\"", 12); + assertAQuery("EXACTTYPE:\"" + testSuperType.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 12); + assertAQuery("ASPECT:\"" + testAspect.toString() + "\"", 1); + assertAQuery("ASPECT:\"" + testAspect.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); + assertAQuery("EXACTASPECT:\"" + testAspect.toString() + "\"", 1); + assertAQuery("EXACTASPECT:\"" + testAspect.toPrefixString(dataModel.getNamespaceDAO()) + "\"", 1); + + + /*********** Check data type **********/ + assertAQuery("d\\:double:\"5.6\"", 1); + assertAQuery("d\\:content:\"fox\"", 1); + assertAQuery("d\\:content:\"fox\"", 1, Locale.US, null, null); + + + /*********** Check text **************/ + assertAQuery("TEXT:fox AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", 1); + assertAQuery("TEXT:fox @cm\\:name:fox", 1); + assertAQuery("d\\:content:fox d\\:text:fox", 1); + assertAQuery("TEXT:fo AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", 0); + + assertAQuery("TEXT:\"the\"", 1); + assertAQuery("TEXT:\"and\"", 1); + + //TODO fix this assert + //assertAQuery("TEXT:\"over the lazy\"", 1); + // Depends on stop words being removed .... which depends on the configuration + //assertAQuery("TEXT:\"over a lazy\"", 1); + + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":*a*", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":*A*", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":\"*a*\"", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":\"*A*\"", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":*s*", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":*S*", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":\"*s*\"", 1); + assertAQuery("\\@" + + SearchLanguageConversion.escapeLuceneQuery(QName.createQName(TEST_NAMESPACE, + "text-indexed-stored-tokenised-atomic").toString()) + ":\"*S*\"", 1); + assertAQuery("TEXT:*A*", 1); + assertAQuery("TEXT:\"*a*\"", 1); + assertAQuery("TEXT:\"*A*\"", 1); + assertAQuery("TEXT:*a*", 1); + assertAQuery("TEXT:*Z*", 1); + assertAQuery("TEXT:\"*z*\"", 1); + assertAQuery("TEXT:\"*Z*\"", 1); + assertAQuery("TEXT:*z*", 1); + assertAQuery("TEXT:laz*", 1); + assertAQuery("TEXT:laz~", 1); + assertAQuery("TEXT:la?y", 1); + assertAQuery("TEXT:?a?y", 1); + assertAQuery("TEXT:*azy", 1); + assertAQuery("TEXT:*az*", 1); + + // Accents + + assertAQuery("TEXT:\"\u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF\"", 1); + assertAQuery("TEXT:\"aeidnouy\"", 1); + + /**************** Check text *********************/ + + assertAQuery("TEXT:\"fox\"", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ":\"fox\"", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ".mimetype:\"text/plain\"", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ".locale:\"en_GB\"", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ".locale:en_*", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ".locale:e*_GB", 1); + assertAQuery("@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + + ".size:\"298\"", 1); + + //TODO Fix these tests + + assertAQuery("TEXT:\"fox\"", 0, null, new String[] { "@" + + ContentModel.PROP_NAME.toString() }, null); + assertAQuery("TEXT:\"fox\"", 1, null, new String[] { + "@" + ContentModel.PROP_NAME.toString(), "@" + ContentModel.PROP_CONTENT.toString() }, null); + assertAQuery("TEXT:\"cabbage\"", 15, null, new String[] { "@" + + orderText.toString() }, null); + assertAQuery("TEXT:\"cab*\"", 15, null, + new String[] { "@" + orderText.toString() }, null); + assertAQuery("TEXT:\"*bage\"", 15, null, + new String[] { "@" + orderText.toString() }, null); + assertAQuery("TEXT:\"*ba*\"", 15, null, + new String[] { "@" + orderText.toString() }, null); + assertAQuery("TEXT:cabbage", 15, null, + new String[] { "@" + orderText.toString() }, null); + assertAQuery("TEXT:*cab*", 15, Locale.ENGLISH, new String[] { "@" + + orderText.toString() }, null); + assertAQuery("TEXT:*bage", 15, null, + new String[] { "@" + orderText.toString() }, null); + +// assertAQuery("TEXT:dabbage~0.3", 15, null, new String[] { "@" +// + orderText.toString() }, null); + + assertAQuery("TEXT:\"alfresco\"", 1); + assertAQuery("TEXT:\"alfresc?\"", 1); + assertAQuery("TEXT:\"alfres??\"", 1); + assertAQuery("TEXT:\"alfre???\"", 1); + assertAQuery("TEXT:\"alfr????\"", 1); + assertAQuery("TEXT:\"alf?????\"", 1); + assertAQuery("TEXT:\"al??????\"", 1); + assertAQuery("TEXT:\"a???????\"", 1); + assertAQuery("TEXT:\"????????\"", 1); + assertAQuery("TEXT:\"a??re???\"", 1); + assertAQuery("TEXT:\"?lfresco\"", 1); + assertAQuery("TEXT:\"??fresco\"", 1); + assertAQuery("TEXT:\"???resco\"", 1); + assertAQuery("TEXT:\"????esco\"", 1); + assertAQuery("TEXT:\"?????sco\"", 1); + assertAQuery("TEXT:\"??????co\"", 1); + assertAQuery("TEXT:\"???????o\"", 1); + assertAQuery("TEXT:\"???res?o\"", 1); + assertAQuery("TEXT:\"????e?co\"", 1); + assertAQuery("TEXT:\"????e?c?\"", 1); + assertAQuery("TEXT:\"???re???\"", 1); + + assertAQuery("TEXT:\"alfresc*\"", 1); + assertAQuery("TEXT:\"alfres*\"", 1); + assertAQuery("TEXT:\"alfre*\"", 1); + assertAQuery("TEXT:\"alfr*\"", 1); + assertAQuery("TEXT:\"alf*\"", 1); + assertAQuery("TEXT:\"al*\"", 1); + assertAQuery("TEXT:\"a*\"", 1); + assertAQuery("TEXT:\"a****\"", 1); + assertAQuery("TEXT:\"*lfresco\"", 1); + assertAQuery("TEXT:\"*fresco\"", 1); + assertAQuery("TEXT:\"*resco\"", 1); + assertAQuery("TEXT:\"*esco\"", 1); + assertAQuery("TEXT:\"*sco\"", 1); + assertAQuery("TEXT:\"*co\"", 1); + assertAQuery("TEXT:\"*o\"", 1); + assertAQuery("TEXT:\"****lf**sc***\"", 1); + // Lucene wildcard bug matches when it should not .... + //assertAQuery("TEXT:\"*??*lf**sc***\"", 0); + assertAQuery("TEXT:\"??lf**sc***\"", 0); + assertAQuery("TEXT:\"alfresc*tutorial\"", 0); + assertAQuery("TEXT:\"alf* tut*\"", 1); + assertAQuery("TEXT:\"*co *al\"", 1); + + /********* check mltext ************/ + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfresco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfresc?\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfres??\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfre???\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfr????\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alf?????\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"al??????\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"a???????\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"????????\"", 1); + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"a??re???\"", 1); + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"?lfresco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"??fresco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"???resco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"????esco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"?????sco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"??????co\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"???????o\"", 1); + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"???resco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"???res?o\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"????e?co\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"????e?c?\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"???re???\"", 1); + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfresc*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfres*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfre*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alfr*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"alf*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"al*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"a*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"a*****\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*lfresco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*fresco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*resco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*esco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*sco\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*co\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*o\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"****lf**sc***\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*??*lf**sc***\"", 0); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"Alfresc*tutorial\"", 0); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"Alf* tut*\"", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_DESCRIPTION.toString()) + + ":\"*co *al\"", 1); + + QName mlQName = QName.createQName(TEST_NAMESPACE, "ml"); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":and", 0); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":\"and\"", 0); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1); + + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, Locale.UK, + null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, + Locale.ENGLISH, null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banane", 1, + Locale.FRENCH, null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":香蕉", 1, + Locale.CHINESE, null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banaan", 1, + new Locale("nl"), null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banane", 1, + Locale.GERMAN, null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":μπανάνα", 1, + new Locale("el"), null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, + Locale.ITALIAN, null, null); + + //TODO fix test + /* + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":�?ナナ", 1, new Locale( + "ja"), null, null); + */ + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":바나나", 1, new Locale( + "ko"), null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":banana", 1, + new Locale("pt"), null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":банан", 1, new Locale( + "ru"), null, null); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(mlQName.toString()) + ":plátano", 1, + new Locale("es"), null, null); + + /*********** Check ranges **************/ + + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[a TO b]", 1); + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[a TO \uFFFF]", 14); + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[* TO b]", 2); + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[\u0000 TO b]", 2); + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[d TO \uFFFF]", 12); + assertAQuery("\\@" + SearchLanguageConversion.escapeLuceneQuery(orderText.toString()) + ":[d TO *]", 12); + + /*********** Check non-field ************/ + + assertAQuery("TEXT:fox", 1); + assertAQuery("TEXT:fo*", 1); + assertAQuery("TEXT:f*x", 1); + assertAQuery("TEXT:*ox", 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":fox", + 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":fo*", + 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":f*x", + 1); + assertAQuery( + "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT.toString()) + ":*ox", + 1); + assertAQuery( + "@" + + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT + .toPrefixString(dataModel.getNamespaceDAO())) + ":fox", 1); + assertAQuery( + "@" + + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT + .toPrefixString(dataModel.getNamespaceDAO())) + ":fo*", 1); + assertAQuery( + "@" + + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT + .toPrefixString(dataModel.getNamespaceDAO())) + ":f*x", 1); + assertAQuery( + "@" + + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_CONTENT + .toPrefixString(dataModel.getNamespaceDAO())) + ":*ox", 1); + + /************** Check null and unset *************/ + + assertAQuery("ISUNSET:\"" + + QName.createQName(TEST_NAMESPACE, "null").toString() + "\"", 0); + assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, + "null").toString() + "\"", 1); + assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, + "null").toString() + "\"", 1); + assertAQuery("ISNOTNULL:\"" + + QName.createQName(TEST_NAMESPACE, "null").toString() + "\"", 0); + + assertAQuery("ISUNSET:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 0); + assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, + "path-ista").toString() + "\"", 0); + assertAQuery("ISNOTNULL:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 1); + assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, "path-ista").toString() + "\"", 1); + + assertAQuery("ISUNSET:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 0); + assertAQuery("ISNULL:\"" + QName.createQName(TEST_NAMESPACE, + "aspectProperty").toString() + "\"", 0); + assertAQuery("ISNOTNULL:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 1); + assertAQuery("EXISTS:\"" + QName.createQName(TEST_NAMESPACE, "aspectProperty").toString() + "\"", 1); + + + /***** Check internal fields ******/ + + final Long aclId = new Long(1); + + for (int i = 1; i < 16; i++) + { + Long dbId = new Long(i); + String id = SearchLanguageConversion.escapeLuceneQuery(AlfrescoSolrDataModel.getNodeDocumentId(AlfrescoSolrDataModel.DEFAULT_TENANT, aclId, dbId)); + assertQ(areq(params("q", FIELD_SOLR4_ID + ":" + id, "qt", "/afts"), null), + "*[count(//doc)=1]"); + } + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_NODE), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_ACL), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_ACL_TX), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", SearchLanguageConversion.escapeLuceneQuery(FIELD_DOC_TYPE) + ":" + SolrInformationServer.DOC_TYPE_TX), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PARENT + ":\"" + testNodeRef + "\""), null), + "*[count(//doc)=4]"); + + // AbstractLuceneQueryParser.FIELD_LINKASPECT is not used for SOLR + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ANCESTOR + ":\"" + testNodeRef + "\""), null), + "*[count(//doc)=10]"); + + // AbstractLuceneQueryParser.FIELD_ISCONTAINER is not used for SOLR + // AbstractLuceneQueryParser.FIELD_ISCATEGORY is not used for SOLR + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:one\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:two\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:three\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:four\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:five\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:six\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:seven\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-0\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-1\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eight-2\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:nine\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:ten\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:eleven\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:twelve\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:thirteen\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:fourteen\""), null), + "*[count(//doc)=2]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:fifteen\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:common\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_QNAME + ":\"cm:link\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:one\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:two\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:three\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:four\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:five\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:six\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:seven\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-0\""), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-1\""), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eight-2\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:nine\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:ten\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:eleven\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:twelve\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:thirteen\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:fourteen\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:fifteen\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:common\""), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCQNAME + ":\"cm:link\""), null), + "*[count(//doc)=0]"); + + // AbstractLuceneQueryParser.FIELD_ISROOT is not used in SOLR + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYASSOCTYPEQNAME + ":\"" + + ContentModel.ASSOC_CHILDREN.toPrefixString(dataModel.getNamespaceDAO()) + "\""), null), + "*[count(//doc)=4]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ISNODE + ":T"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ASSOCTYPEQNAME + ":\"" + + ContentModel.ASSOC_CHILDREN.toPrefixString(dataModel.getNamespaceDAO()) + "\""), null), + "*[count(//doc)=5]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_PRIMARYPARENT + ":\"" + testNodeRef + "\""), null), + "*[count(//doc)=2]"); + + // TYPE and ASPECT is covered in other tests + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_FTSSTATUS + ":\"New\""), null), + "*[count(//doc)=2]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":1"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":2"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":3"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":4"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":5"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":6"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":7"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":8"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":9"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":10"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":11"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":12"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":13"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":14"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":15"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":16"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_DBID + ":17"), null), + "*[count(//doc)=0]"); + + // testQueryByHandler(report, core, "/afts", AbstractLuceneQueryParser.FIELD_DBID+":*", 16, null, null, (String) + // null); + // testQueryByHandler(report, core, "/afts", AbstractLuceneQueryParser.FIELD_DBID+":[3 TO 4]", 2, null, null, + // null); + + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_TXID + ":1"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INTXID + ":1"), null), + "*[count(//doc)=17]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ACLTXID + ":1"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INACLTXID + ":1"), null), + "*[count(//doc)=2]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_INACLTXID + ":2"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_ACLID + ":1"), null), + "*[count(//doc)=17]"); + + + //TODO fix tests + /* + assertQ(areq(params("rows", "20", "qt", "/native", "q", FIELD_TXCOMMITTIME + ":*"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", FIELD_READER + ":\"GROUP_EVERYONE\""), null), + "*[count(//doc)=16]"); + + testQueryByHandler(report, core, "/native", FIELD_TXCOMMITTIME + ":*", 1, null, null, null, null, + null, (String) null); + + testQueryByHandler(report, core, "/native", FIELD_ACLTXCOMMITTIME + ":*", 1, null, null, null, + null, null, (String) null); + */ + + /* + + // AbstractLuceneQueryParser.FIELD_EXCEPTION_MESSAGE + // addNonDictionaryField(AbstractLuceneQueryParser.FIELD_EXCEPTION_STACK + + + testQueryByHandler(report, core, "/afts", FIELD_READER + ":\"GROUP_EVERYONE\"", 16, null, null, + null, null, null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":andy", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":bob", 1, null, null, null, null, null, + (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":cid", 1, null, null, null, null, null, + (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":dave", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":eoin", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":fred", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":gail", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":hal", 1, null, null, null, null, null, + (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":ian", 1, null, null, null, null, null, + (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":jake", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":kara", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":loon", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":mike", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":noodle", 1, null, null, null, null, + null, (String) null); + testQueryByHandler(report, core, "/afts", FIELD_OWNER + ":ood", 1, null, null, null, null, null, + (String) null); + + testQueryByHandler(report, core, "/afts", FIELD_PARENT_ASSOC_CRC + ":0", 16, null, null, null, + null, null, (String) null); + + */ + + /********************TEST FTS **************************/ + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy and -dog"), null), + "*[count(//doc)=15]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|lazy and |dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|eager and |dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|lazy and |wolf"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "|eager and |wolf"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy or -dog"), null), + "*[count(//doc)=15]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-eager or -dog"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-lazy or -wolf"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "-eager or -wolf"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and not dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy not dog"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and !dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy !dog"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy and -dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "lazy -dog"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm_content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "d:content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "=cm_content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "~cm_content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:big OR cm:content:lazy"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:big AND cm:content:lazy"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "{http://www.alfresco.org/model/content/1.0}content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "=lazy"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:big OR @cm:content:lazy"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:big AND @cm:content:lazy"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@{http://www.alfresco.org/model/content/1.0}content:\"lazy\""), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "~@cm:content:big OR ~@cm:content:lazy"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown * quick"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown * dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(0) dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(1) dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(2) dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(3) dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(4) dog"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(5) dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "brown *(6) dog"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(\"lazy\")"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy and -dog)"), null), + "*[count(//doc)=15]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy and dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and -dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|lazy and |dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|eager and |dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|lazy and |wolf)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(|eager and |wolf)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy or -dog)"), null), + "*[count(//doc)=15]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-eager or -dog)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-lazy or -wolf)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(-eager or -wolf)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and not dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q","TEXT:(lazy not dog)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and !dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy !dog)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy and -dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(lazy -dog)"), null), + "*[count(//doc)=16]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm_content:(\"lazy\")"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:(big OR lazy)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "cm:content:(big AND lazy)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "{http://www.alfresco.org/model/content/1.0}content:(\"lazy\")"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(=lazy)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(big) OR @cm:content:(lazy)"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(big) AND @cm:content:(lazy)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@{http://www.alfresco.org/model/content/1.0}content:(\"lazy\")"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "@cm:content:(~big OR ~lazy)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown * quick)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown * dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(0) dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(1) dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(2) dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(3) dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(4) dog)"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(5) dog)"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "TEXT:(brown *(6) dog)"), null), + "*[count(//doc)=1]"); + + //Mimetype + assertAQueryHasNumberOfDocs("cm:content.mimetype:\"text/plain\"", 1); + assertAQueryHasNumberOfDocs("cm_content.mimetype:\"text/plain\"", 1); + assertAQueryHasNumberOfDocs("@cm_content.mimetype:\"text/plain\"", 1); + assertAQueryHasNumberOfDocs("content.mimetype:\"text/plain\"", 1); + assertAQueryHasNumberOfDocs("@{http://www.alfresco.org/model/content/1.0}content.mimetype:\"text/plain\"", 1); + assertAQueryHasNumberOfDocs("{http://www.alfresco.org/model/content/1.0}content.mimetype:\"text/plain\"", 1); + + //Numbers + QName qname = QName.createQName(TEST_NAMESPACE, "float\\-ista"); + + assertAQueryHasNumberOfDocs(qname + ":3.40", 1); + assertAQueryHasNumberOfDocs(qname + ":3..4", 1); + assertAQueryHasNumberOfDocs(qname + ":3..3.39", 0);; + assertAQueryHasNumberOfDocs(qname + ":3..3.40", 1); + assertAQueryHasNumberOfDocs(qname + ":3.41..3.9", 0);; + assertAQueryHasNumberOfDocs(qname + ":3.40..3.9", 1); + + assertAQueryHasNumberOfDocs(qname + ":[3 TO 4]", 1); + assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.39]", 0);; + assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.4]", 1); + assertAQueryHasNumberOfDocs(qname + ":[3.41 TO 4]", 0);; + assertAQueryHasNumberOfDocs(qname + ":[3.4 TO 4]", 1); + assertAQueryHasNumberOfDocs(qname + ":[3 TO 3.4>", 0);; + assertAQueryHasNumberOfDocs(qname + ":<3.4 TO 4]", 0);; + assertAQueryHasNumberOfDocs(qname + ":<3.4 TO 3.4>", 0);; + + assertAQueryHasNumberOfDocs(qname + ":(3.40)", 1); + assertAQueryHasNumberOfDocs(qname + ":(3..4)", 1); + assertAQueryHasNumberOfDocs(qname + ":(3..3.39)", 0);; + assertAQueryHasNumberOfDocs(qname + ":(3..3.40)", 1); + assertAQueryHasNumberOfDocs(qname + ":(3.41..3.9)", 0);; + assertAQueryHasNumberOfDocs(qname + ":(3.40..3.9)", 1); + + assertAQueryHasNumberOfDocs(qname + ":([3 TO 4])", 1); + assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.39])", 0);; + assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.4])", 1); + assertAQueryHasNumberOfDocs(qname + ":([3.41 TO 4])", 0);; + assertAQueryHasNumberOfDocs(qname + ":([3.4 TO 4])", 1); + assertAQueryHasNumberOfDocs(qname + ":([3 TO 3.4>)", 0);; + assertAQueryHasNumberOfDocs(qname + ":(<3.4 TO 4])", 0);; + assertAQueryHasNumberOfDocs(qname + ":(<3.4 TO 3.4>)", 0);; + + assertAQueryHasNumberOfDocs("test:float_x002D_ista:3.40", 1); + + //Test Lazy + assertAQueryHasNumberOfDocs("lazy", 1); + assertAQueryHasNumberOfDocs("laz*", 1); + assertAQueryHasNumberOfDocs("l*y", 1); + assertAQueryHasNumberOfDocs("l??y", 1); + assertAQueryHasNumberOfDocs("?az?", 1); + assertAQueryHasNumberOfDocs("*zy", 1); + + assertAQueryHasNumberOfDocs("\"lazy\"", 1); + assertAQueryHasNumberOfDocs("\"laz*\"", 1); + assertAQueryHasNumberOfDocs("\"l*y\"", 1); + assertAQueryHasNumberOfDocs("\"l??y\"", 1); + assertAQueryHasNumberOfDocs("\"?az?\"", 1); + assertAQueryHasNumberOfDocs("\"*zy\"", 1); + + assertAQueryHasNumberOfDocs("cm:content:lazy", 1); + assertAQueryHasNumberOfDocs("cm:content:laz*", 1); + assertAQueryHasNumberOfDocs("cm:content:l*y", 1); + assertAQueryHasNumberOfDocs("cm:content:l??y", 1); + assertAQueryHasNumberOfDocs("cm:content:?az?", 1); + assertAQueryHasNumberOfDocs("cm:content:*zy", 1); + + assertAQueryHasNumberOfDocs("cm:content:\"lazy\"", 1); + assertAQueryHasNumberOfDocs("cm:content:\"laz*\"", 1); + assertAQueryHasNumberOfDocs("cm:content:\"l*y\"", 1); + assertAQueryHasNumberOfDocs("cm:content:\"l??y\"", 1); + assertAQueryHasNumberOfDocs("cm:content:\"?az?\"", 1); + assertAQueryHasNumberOfDocs("cm:content:\"*zy\"", 1); + + assertAQueryHasNumberOfDocs("cm:content:(lazy)", 1); + assertAQueryHasNumberOfDocs("cm:content:(laz*)", 1); + assertAQueryHasNumberOfDocs("cm:content:(l*y)", 1); + assertAQueryHasNumberOfDocs("cm:content:(l??y)", 1); + assertAQueryHasNumberOfDocs("cm:content:(?az?)", 1); + assertAQueryHasNumberOfDocs("cm:content:(*zy)", 1); + + assertAQueryHasNumberOfDocs("cm:content:(\"lazy\")", 1); + assertAQueryHasNumberOfDocs("cm:content:(\"laz*\")", 1); + assertAQueryHasNumberOfDocs("cm:content:(\"l*y\")", 1); + assertAQueryHasNumberOfDocs("cm:content:(\"l??y\")", 1); + assertAQueryHasNumberOfDocs("cm:content:(\"?az?\")", 1); + assertAQueryHasNumberOfDocs("cm:content:(\"*zy\")", 1); + + assertAQueryHasNumberOfDocs("lazy^2 dog^4.2", 1); + assertAQueryHasNumberOfDocs("lazy~0.7", 1); + assertAQueryHasNumberOfDocs("cm:content:laxy~0.7", 1); + assertAQueryHasNumberOfDocs("laxy~0.7", 1); + assertAQueryHasNumberOfDocs("=laxy~0.7", 1); + assertAQueryHasNumberOfDocs("~laxy~0.7", 1); + + assertAQueryHasNumberOfDocs("\"quick fox\"~0", 0); + assertAQueryHasNumberOfDocs("\"quick fox\"~1", 1); + assertAQueryHasNumberOfDocs("\"quick fox\"~2", 1); + assertAQueryHasNumberOfDocs("\"quick fox\"~3", 1); + + assertAQueryHasNumberOfDocs("\"fox quick\"~0", 0); + assertAQueryHasNumberOfDocs("\"fox quick\"~1", 0); + assertAQueryHasNumberOfDocs("\"fox quick\"~2", 1); + assertAQueryHasNumberOfDocs("\"fox quick\"~3", 1); + + assertAQueryHasNumberOfDocs("lazy", 1); + assertAQueryHasNumberOfDocs("-lazy", 15); + assertAQueryHasNumberOfDocs("lazy -lazy", 16); + assertAQueryHasNumberOfDocs("lazy^20 -lazy", 16); + assertAQueryHasNumberOfDocs("lazy^20 -lazy^20", 16); + + assertAQueryHasNumberOfDocs("cm:content:lazy",1); +// assertAQueryHasNumberOfDocs("ANDY:lazy", 1); + assertAQueryHasNumberOfDocs("content:lazy", 1); + assertAQueryHasNumberOfDocs("PATH:\"//.\"", 16); + assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\"", 0); + assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\" -TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"", 15); + assertAQueryHasNumberOfDocs("+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\" AND -TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"", 0); + + assertAQueryHasNumberOfDocs("(brown *(6) dog)", 1); + assertAQueryHasNumberOfDocs("TEXT:(brown *(6) dog)", 1); + assertAQueryHasNumberOfDocs("\"//.\"", 0); + assertAQueryHasNumberOfDocs("cm:content:brown", 1); + + //assertAQueryHasNumberOfDocs("ANDY:brown", 1); + //assertAQueryHasNumberOfDocs("andy:brown", 1); + // testQueryByHandler(report, core, "/afts", "ANDY", "brown", 1, null, (String) null); + // testQueryByHandler(report, core, "/afts", "andy", "brown", 1, null, (String) null); + + assertAQueryHasNumberOfDocs("modified:*", 2); + assertAQueryHasNumberOfDocs("modified:[MIN TO NOW]", 2); + + assertAQueryHasNumberOfDocs("TYPE:" + testType.toString(), 1); +// testQueryByHandler(report, core, "/afts", "TYPE:" + testType.toString(), 0, null, null, null, null, null, (ContentStream)null, "mimetype():document"); + assertAQueryHasNumberOfDocs("TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1); +// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1, null, null, null, null, null, (ContentStream)null, "mimetype():document"); +// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 0, null, null, null, null, null, (ContentStream)null, "contentSize():[0 TO 100]"); +// testQueryByHandler(report, core, "/afts", "TYPE:" + ContentModel.TYPE_CONTENT.toString(), 1, null, null, null, null, null, (ContentStream)null, "contentSize():[100 TO 1000]"); + + assertAQueryHasNumberOfDocs("modified:[NOW/DAY-1DAY TO NOW/DAY+1DAY]", 2); + assertAQueryHasNumberOfDocs("modified:[NOW/DAY-1DAY TO *]", 2); + assertAQueryHasNumberOfDocs("modified:[* TO NOW/DAY+1DAY]", 2); + assertAQueryHasNumberOfDocs("modified:[* TO *]", 2); + + // Synonym + // 1 in text - 1 in query + assertAQueryHasNumberOfDocs("quick", 1); + assertAQueryHasNumberOfDocs("quick", 1); + // 3 words in test - 1..3 in query + assertAQueryHasNumberOfDocs("brown AND fox AND jumped", 1); +//Not working +// assertAQueryHasNumberOfDocs("leaping AND reynard", 1); +// assertAQueryHasNumberOfDocs("springer", 1); + // 1 word in text 1..2 in query + assertAQueryHasNumberOfDocs("lazy", 1); +// assertAQueryHasNumberOfDocs("bone AND idle", 1); + + // Cross language support and tokenisation part and full. + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.ENGLISH.toString()), null), "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.FRENCH.toString()), null), "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:English123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:French123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); + assertQ(areq(params("rows", "20", "qt", "/afts", "q", "title:123", "locale", Locale.GERMAN.toString()), null), "*[count(//doc)=1]"); + + /* + testQueryByHandler(report, core, "/afts", "PATH:\"//.\"", 16, "DBID desc", new Integer[] { 16, 15, 14, 13, 12, 11, + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }, null, null, null, (String) null); + + // testQueryByHandler(report, core, "/afts", "PATH", "\"//.\"", 16, null, (String) null); + */ + + //Auth code goes here + } + + private void assertAQueryHasNumberOfDocs(String query, int num) + { + assertQ(areq(params("rows", "20", "qt", "/afts", "q", query), null), "*[count(//doc)="+num+"]"); + } + + +} \ No newline at end of file