private void check(StructureWriteHandle handle, String optionsName) { RawCombinedQueryDefinition rawCombinedQueryDefinition; if (optionsName == null) { rawCombinedQueryDefinition = queryMgr.newRawCombinedQueryDefinition(handle); } else { rawCombinedQueryDefinition = queryMgr.newRawCombinedQueryDefinition(handle, optionsName); } // StringHandle stringResults = null; // stringResults = queryMgr.search(rawCombinedQueryDefinition, // new StringHandle()); // System.out.println(stringResults.get()); SearchHandle results; results = queryMgr.search(rawCombinedQueryDefinition, new SearchHandle()); checkResults(results); }
@Test public void testRawCtsQueryFromFileHandle() throws Exception { Common.client.newDocumentManager().write("testRawCtsQueryFromFileHandle.xml", new FileHandle(new File("src/test/resources/constraint5.xml")).withFormat(Format.XML)); String ctsQueryFilePath = "ctsQuery1.xml"; String ctsQueryAsString = Common.testFileToString(ctsQueryFilePath); File ctsQueryFile = new File(Common.getResourceUri(ctsQueryFilePath)); FileHandle ctsHandle = new FileHandle(ctsQueryFile); QueryDefinition[] queries = new QueryDefinition[] { queryMgr.newRawCombinedQueryDefinition(ctsHandle), queryMgr.newRawCtsQueryDefinition(ctsHandle), queryMgr.newRawCombinedQueryDefinitionAs(Format.XML, ctsQueryFile), queryMgr.newRawCtsQueryDefinitionAs(Format.XML, ctsQueryFile), queryMgr.newRawCtsQueryDefinition(new InputStreamHandle(new FileInputStream(ctsQueryFile))), queryMgr.newRawCtsQueryDefinition(new StringHandle(ctsQueryAsString)), queryMgr.newRawCtsQueryDefinition(new DOMHandle(Common.testStringToDocument(ctsQueryAsString))) }; for ( QueryDefinition query : queries ) { // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(query, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); assertXpathEvaluatesTo("1", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("0026", "string(//*[local-name()='result'][1]//*[local-name()='id' or local-name()='highlight'])", resultDoc); } }
@Test public void testRawCombinedQuery() throws Exception { StringHandle structuredQuery = new StringHandle( "{ \"search\": " + "{ \"query\": " + "{ \"queries\": [" + "{ \"value-query\": " + "{ \"json-property\": \"department\"," + " \"text\": [\"HR\"]" + "}" + "}" + "]}" + "}" + "}").withFormat(JSON); RawCombinedQueryDefinition query = client.newQueryManager().newRawCombinedQueryDefinition(structuredQuery); query.setCollections(qhbTestCollection); Map<String, String[]> matchesByForest = new HashMap<>(); matchesByForest.put("java-unittest-1", new String[] {uri1, uri3, uri4}); matchesByForest.put("java-unittest-2", new String[] {}); matchesByForest.put("java-unittest-3", new String[] {uri2}); runQueryBatcher(moveMgr.newQueryBatcher(query), query, matchesByForest, 30, 20); }
@Test public void testRawCombinedCtsQueryFromFileHandle() throws Exception { Common.client.newDocumentManager().write("testRawCtsQueryFromFileHandle.xml", new FileHandle(new File("src/test/resources/constraint5.xml")).withFormat(Format.XML)); FileHandle ctsHandle = new FileHandle(new File("src/test/resources/combinedCtsQuery.xml")); QueryDefinition[] queries = new QueryDefinition[] { queryMgr.newRawCombinedQueryDefinition(ctsHandle), queryMgr.newRawCtsQueryDefinition(ctsHandle), }; for ( QueryDefinition query : queries ) { // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(query, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); assertXpathEvaluatesTo("1", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("0026", "string(//*[local-name()='result'][1]//*[local-name()='id' or local-name()='highlight'])", resultDoc); } } }
@Test public void test_issue644() { QueryManager queryMgr = Common.client.newQueryManager(); String queryText = "queryThatMatchesNothing"; RawCombinedQueryDefinition query = queryMgr.newRawCombinedQueryDefinition(new StringHandle( "<search xmlns='http://marklogic.com/appservices/search'>" + "<options>" + "<extract-document-data selected='all'>" + "<extract-path>/*</extract-path>" + "</extract-document-data>" + "<return-metrics>true</return-metrics>" + "</options>" + "<query>" + "<term-query><text>" + queryText + "</text></term-query>" + "</query>" + "</search>")); queryMgr.search(query, new SearchHandle()); // we didn't throw an Exception, which means this issue is resolved }
private void check(StructureWriteHandle handle, String optionsName) { QueryManager queryMgr = Common.client.newQueryManager(); queryMgr.setPageLength(0); RawCombinedQueryDefinition query = queryMgr.newRawCombinedQueryDefinition(handle); SearchHandle response = queryMgr.search(query, new SearchHandle()); String wrappedCtsQuery = response.getQuery(new StringHandle()).get(); // remove the <search:query> wrapper element String ctsQuery = wrappedCtsQuery.replaceAll("</?search:query[^>]*>", ""); long numMatches = response.getTotalResults(); checkCts(new StringHandle(ctsQuery), optionsName, numMatches); }
+ "\"options\":{\"return-metrics\":false, \"constraint\":{\"name\":\"id\", \"range\":{\"type\": \"xs:long\",\"json-property\":\"id\"}}}" + "}}"; PojoQueryDefinition qd = (PojoQueryDefinition) queryMgr.newRawCombinedQueryDefinition(new StringHandle(queryAsString).withFormat(Format.JSON));
@Test public void testRawCombinedQueryGeoBoxAndWord() throws KeyManagementException, NoSuchAlgorithmException, IOException, ParserConfigurationException, SAXException, XpathException, TransformerException { System.out.println("Running testRawCombinedQueryGeoBoxAndWord"); DatabaseClient client = getDatabaseClient("rest-admin", "x", getConnType()); // write docs loadGeoData(); // get the combined query File file = new File("src/test/java/com/marklogic/client/functionaltest/combined/combinedQueryOptionGeoBoxAndWord.xml"); // create a handle for the search criteria FileHandle rawHandle = new FileHandle(file); // bug 21107 QueryManager queryMgr = client.newQueryManager(); // create a search definition based on the handle RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle); // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(querydef, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); System.out.println(convertXMLDocumentToString(resultDoc)); assertXpathEvaluatesTo("1", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("/geo-constraint/geo-constraint20.xml", "string(//*[local-name()='result']//@*[local-name()='uri'])", resultDoc); // release client client.release(); }
@Test public void testRawCombinedQueryGeoPointAndWord() throws KeyManagementException, NoSuchAlgorithmException, IOException, ParserConfigurationException, SAXException, XpathException, TransformerException { System.out.println("Running testRawCombinedQueryGeoPointAndWord"); DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (int i = 1; i <= 9; i++) { writeDocumentUsingInputStreamHandle(client, "geo-constraint" + i + ".xml", "/geo-constraint/", "XML"); } // get the combined query File file = new File("src/test/java/com/marklogic/client/functionaltest/combined/combinedQueryOptionGeoPointAndWord.xml"); // create a handle for the search criteria FileHandle rawHandle = new FileHandle(file); // bug 21107 QueryManager queryMgr = client.newQueryManager(); // create a search definition based on the handle RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle); // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(querydef, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); System.out.println(convertXMLDocumentToString(resultDoc)); assertXpathEvaluatesTo("1", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("/geo-constraint/geo-constraint8.xml", "string(//*[local-name()='result']//@*[local-name()='uri'])", resultDoc); // release client client.release(); }
@Test public void testBug22179() throws KeyManagementException, NoSuchAlgorithmException, IOException { System.out.println("Running testBug22179"); String[] filenames = { "constraint1.json", "constraint2.json", "constraint3.json", "constraint4.json", "constraint5.json" }; DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/qbe/", "JSON"); } ServerConfigurationManager confMgr = client.newServerConfigManager(); confMgr.setQueryValidation(true); String combinedCriteria = "{\"search\":{\"options\":{\"constraint\":[{\"name\":\"para\", \"word\":{\"term-option\":[\"case-insensitive\"], \"field\":{\"name\":\"para\"}}},{\"name\":\"id\", \"value\":{\"element\":{\"ns\":\"\", \"name\":\"id\"}}}], \"return-metrics\":false, \"debug\":true, \"return-qtext\":false, \"transform-results\":{\"apply\":\"snippet\"}}, \"query\":{\"queries\":[{\"or-query\":{\"queries\":[{\"and-query\":{\"queries\":[{\"word-constraint-query\":{\"text\":[\"Bush\"], \"constraint-name\":\"para\"}},{\"not-query\":{\"word-constraint-query\":{\"text\":[\"memex\"], \"constraint-name\":\"para\"}}}]}},{\"and-query\":{\"queries\":[{\"value-constraint-query\":{\"text\":[\"0026\"], \"constraint-name\":\"id\"}},{\"term-query\":{\"text\":[\"memex\"]}}]}}]}}]}}}"; QueryManager queryMgr = client.newQueryManager(); StringHandle combinedHandle = new StringHandle(combinedCriteria).withFormat(Format.JSON); RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(combinedHandle); String output = queryMgr.search(querydef, new StringHandle()).get(); System.out.println(output); assertTrue(output.contains("(cts:search(fn:collection(), cts:or-query((cts:and-query((cts:field-word-query")); // release client client.release(); }
RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle);
@Test public void testRawCombinedQueryGeoBox() throws KeyManagementException, NoSuchAlgorithmException, IOException, ParserConfigurationException, SAXException, XpathException, TransformerException { System.out.println("testRawCombinedQueryGeoBox"); DatabaseClient client = getDatabaseClient("rest-admin", "x", getConnType()); // write docs loadGeoData(); // get the combined query File file = new File("src/test/java/com/marklogic/client/functionaltest/combined/combinedQueryOptionGeoBox.xml"); // create a handle for the search criteria FileHandle rawHandle = new FileHandle(file); // bug 21107 QueryManager queryMgr = client.newQueryManager(); // create a search definition based on the handle RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle); // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(querydef, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); System.out.println(convertXMLDocumentToString(resultDoc)); assertXpathEvaluatesTo("3", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("karl_kara 12,-5 12,-5 12 -5", "string(//*[local-name()='result'][1]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("jack_kara 11,-5 11,-5 11 -5", "string(//*[local-name()='result'][2]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("karl_jill 12,-4 12,-4 12 -4", "string(//*[local-name()='result'][3]//*[local-name()='match'])", resultDoc); // release client client.release(); }
@Test public void testTuples() { String str = head + lexiconOptions + tail; RawCombinedQueryDefinition rawCombinedQueryDefinition; rawCombinedQueryDefinition = queryMgr .newRawCombinedQueryDefinition(new StringHandle(str).withMimetype("application/xml")); StringHandle stringResults = null; ValuesDefinition vdef = queryMgr.newValuesDefinition("n-way"); vdef.setQueryDefinition(rawCombinedQueryDefinition); stringResults = queryMgr.tuples(vdef, new StringHandle()); System.out.println(stringResults.get()); TuplesHandle tuplesResults = queryMgr.tuples(vdef, new TuplesHandle()); Tuple[] tuples = tuplesResults.getTuples(); assertNotNull(tuples); }
@Test public void testRawCombinedQueryGeoCircle() throws KeyManagementException, NoSuchAlgorithmException, IOException, ParserConfigurationException, SAXException, XpathException, TransformerException { System.out.println("testRawCombinedQueryGeoCircle"); DatabaseClient client = getDatabaseClient("rest-writer", "x", getConnType()); // write docs loadGeoData(); // get the combined query File file = new File("src/test/java/com/marklogic/client/functionaltest/combined/combinedQueryOptionGeoCircle.xml"); // create a handle for the search criteria FileHandle rawHandle = new FileHandle(file); // bug 21107 QueryManager queryMgr = client.newQueryManager(); // create a search definition based on the handle RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle); // create result handle DOMHandle resultsHandle = new DOMHandle(); queryMgr.search(querydef, resultsHandle); // get the result Document resultDoc = resultsHandle.get(); System.out.println(convertXMLDocumentToString(resultDoc)); assertXpathEvaluatesTo("5", "string(//*[local-name()='result'][last()]//@*[local-name()='index'])", resultDoc); assertXpathEvaluatesTo("karl_kara 12,-5 12,-5 12 -5", "string(//*[local-name()='result'][1]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("jack_kara 11,-5 11,-5 11 -5", "string(//*[local-name()='result'][2]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("karl_jill 12,-4 12,-4 12 -4", "string(//*[local-name()='result'][3]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("bill_kara 13,-5 13,-5 13 -5", "string(//*[local-name()='result'][4]//*[local-name()='match'])", resultDoc); assertXpathEvaluatesTo("karl_gale 12,-6 12,-6 12 -6", "string(//*[local-name()='result'][5]//*[local-name()='match'])", resultDoc); // release client client.release(); }
StringHandle rawHandle = new StringHandle(combined); RawCombinedQueryDefinition rawDef = queryMgr.newRawCombinedQueryDefinition(rawHandle);
RawCombinedQueryDefinition querydef = queryMgr.newRawCombinedQueryDefinition(rawHandle);
@Test public void testValues() { String str = head + lexiconOptions + tail; RawCombinedQueryDefinition rawCombinedQueryDefinition; rawCombinedQueryDefinition = queryMgr .newRawCombinedQueryDefinition(new StringHandle(str).withMimetype("application/xml")); StringHandle stringResults = null; ValuesDefinition vdef = queryMgr.newValuesDefinition("grandchild"); vdef.setQueryDefinition(rawCombinedQueryDefinition); stringResults = queryMgr.tuples(vdef, new StringHandle()); System.out.println(stringResults.get()); ValuesHandle valuesResults = queryMgr.values(vdef, new ValuesHandle()); assertFalse(valuesResults.getMetrics().getTotalTime() == -1); CountedDistinctValue[] values = valuesResults.getValues(); assertNotNull(values); }
QueryManager queryMgr = Common.client.newQueryManager(); queryMgr.startLogging(logger); RawCombinedQueryDefinition query = queryMgr.newRawCombinedQueryDefinition(new StringHandle( "<search xmlns='http://marklogic.com/appservices/search'>" + "<options>" + "<extract-document-data selected='all'>" + "<extract-path>//description[@xml:lang='en']</extract-path>" + "</extract-document-data>" + "<constraint name='myFacet'>" + "<range type='xs:string' facet='true'>" + "<element name='grandchild'/>" + "</range>" + "</constraint>" + "<extract-metadata>" + "<qname elem-name='description'/>" + "</extract-metadata>" + "<return-constraints>true</return-constraints>" + "<return-facets>true</return-facets>" + "<return-metrics>true</return-metrics>" + "<return-plan>true</return-plan>" + "<return-qtext>true</return-qtext>" + "<return-query>true</return-query>" + "<return-results>true</return-results>" + "<debug>true</debug>" + "</options>" + "<query>" + "<and-query>" + "<collection-query><uri>xml</uri></collection-query>" + "<collection-query><uri>products</uri></collection-query>" + "</and-query>" + "</query>" + "</search>")); queryMgr.setView(QueryView.ALL);
@Ignore public void testGeospatialRegionQueryConstraint() { QueryManager queryMgr = Common.client.newQueryManager(); StructuredQueryBuilder qb = queryMgr.newStructuredQueryBuilder(); StructuredQueryDefinition qdef; String options = "<options xmlns=\"http://marklogic.com/appservices/search\">" + " <constraint name='geo'>" + " <geo-region-path coord='wgs84'>" + " <path-index>/country/region</path-index>" + " </geo-region-path>" + " </constraint>" + "</options>"; qdef = qb.geospatialRegionConstraint("geo", GeospatialOperator.CONTAINS, qb.point(19.429297983081977, -99.140625)); String combinedQuery = "<search xmlns=\"http://marklogic.com/appservices/search\">" + qdef.serialize() + options + "</search>"; RawCombinedQueryDefinition query = queryMgr.newRawCombinedQueryDefinition(new StringHandle(combinedQuery)); SearchHandle results = queryMgr.search(query, new SearchHandle()); MatchDocumentSummary[] summaries = results.getMatchResults(); assertEquals(1, summaries.length); for (MatchDocumentSummary summary : summaries) { assertEquals("mexico.xml", summary.getUri()); } }
@Test public void testFailedSearch() throws IOException { StructuredQueryBuilder qb = queryMgr.newStructuredQueryBuilder(); StructuredQueryDefinition t = qb.term("criteriaThatShouldNotMatchAnyDocument"); RawCombinedQueryDefinition queryDef = queryMgr.newRawCombinedQueryDefinition( new StringHandle(head + t.serialize() + tail) .withMimetype("application/xml") ); SearchHandle results = queryMgr.search(queryDef, new SearchHandle()); assertNotNull(results); MatchDocumentSummary[] summaries = results.getMatchResults(); assertTrue(summaries == null || summaries.length == 0); StringHandle criteria = new StringHandle().withFormat(Format.XML); criteria.set("<q:query xmlns:q='" + RawQueryByExampleDefinition.QBE_NS + "'>" + "<q:word>criteriaThatShouldNotMatchAnyDocument</q:word>" + "</q:query>"); RawQueryByExampleDefinition qbe = queryMgr.newRawQueryByExampleDefinition(criteria); results = queryMgr.search(qbe, new SearchHandle()); assertNotNull(results); summaries = results.getMatchResults(); assertTrue(summaries == null || summaries.length == 0); }