Search in sources :

Example 31 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class LucenePropertyIndexTest method longRepExcerpt.

@Test
public void longRepExcerpt() throws Exception {
    Tree luceneIndex = createFullTextIndex(root.getTree("/"), "lucene");
    root.commit();
    StringBuilder s = new StringBuilder();
    for (int k = 0; k < 100; k++) {
        s.append("foo bar ").append(k).append(" ");
    }
    String text = s.toString();
    List<String> names = new LinkedList<String>();
    for (int j = 0; j < 30; j++) {
        Tree test = root.getTree("/").addChild("ex-test-" + j);
        for (int i = 0; i < 100; i++) {
            String name = "cont" + i;
            test.addChild(name).setProperty("text", text);
            names.add("/" + test.getName() + "/" + name);
        }
    }
    root.commit();
    String query;
    query = "SELECT [jcr:path],[rep:excerpt] from [nt:base] WHERE CONTAINS([text], 'foo')";
    assertQuery(query, SQL2, names);
    // execute the query again to assert the excerpts value of the first row
    Result result = executeQuery(query, SQL2, NO_BINDINGS);
    Iterator<? extends ResultRow> rowsIt = result.getRows().iterator();
    while (rowsIt.hasNext()) {
        ResultRow row = rowsIt.next();
        PropertyValue excerptValue = row.getValue("rep:excerpt");
        assertFalse("There is an excerpt expected for each result row for term 'foo'", excerptValue == null || "".equals(excerptValue.getValue(STRING)));
    }
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) Tree(org.apache.jackrabbit.oak.api.Tree) PropertyValue(org.apache.jackrabbit.oak.api.PropertyValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) LinkedList(java.util.LinkedList) ExtractionResult(org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult) Result(org.apache.jackrabbit.oak.api.Result) Test(org.junit.Test) AbstractQueryTest(org.apache.jackrabbit.oak.query.AbstractQueryTest)

Example 32 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class LucenePropertyIndexTest method simpleRepExcerpt.

@Test
public void simpleRepExcerpt() throws Exception {
    createFullTextIndex(root.getTree("/"), "lucene");
    root.commit();
    Tree content = root.getTree("/").addChild("content");
    content.setProperty("foo", "Lorem ipsum, dolor sit", STRING);
    content.setProperty("bar", "dolor sit, luctus leo, ipsum", STRING);
    root.commit();
    String query = "SELECT [jcr:path],[rep:excerpt] from [nt:base] WHERE CONTAINS(*, 'ipsum')";
    Result result = executeQuery(query, SQL2, NO_BINDINGS);
    Iterator<? extends ResultRow> resultRows = result.getRows().iterator();
    assertTrue(resultRows.hasNext());
    ResultRow firstRow = result.getRows().iterator().next();
    PropertyValue excerptValue = firstRow.getValue("rep:excerpt");
    assertTrue("There is an excerpt expected for rep:excerpt", excerptValue != null && !"".equals(excerptValue.getValue(STRING)));
    excerptValue = firstRow.getValue("rep:excerpt(.)");
    assertTrue("There is an excerpt expected for rep:excerpt(.)", excerptValue != null && !"".equals(excerptValue.getValue(STRING)));
    excerptValue = firstRow.getValue("rep:excerpt(bar)");
    assertTrue("There is an excerpt expected for rep:excerpt(bar) ", excerptValue != null && !"".equals(excerptValue.getValue(STRING)));
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) Tree(org.apache.jackrabbit.oak.api.Tree) PropertyValue(org.apache.jackrabbit.oak.api.PropertyValue) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) ExtractionResult(org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult) Result(org.apache.jackrabbit.oak.api.Result) Test(org.junit.Test) AbstractQueryTest(org.apache.jackrabbit.oak.query.AbstractQueryTest)

Example 33 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class MultiplexingLucenePropertyIndexTest method propertyIndex.

@Test
public void propertyIndex() throws Exception {
    String idxName = "multitest";
    createIndex(root.getTree("/"), idxName, Collections.singleton("foo"));
    root.commit();
    createPath("/libs/a").setProperty("foo", "bar");
    createPath("/libs/b").setProperty("foo", "bar2");
    createPath("/content/a").setProperty("foo", "bar");
    root.commit();
    // There should be 2 index dir due to mount
    assertEquals(2, getIndexDirNames(idxName).size());
    String barQuery = "select [jcr:path] from [nt:base] where [foo] = 'bar'";
    assertQuery(barQuery, of("/libs/a", "/content/a"));
    Result result = executeQuery(barQuery, SQL2, NO_BINDINGS);
    assertTrue(result.getRows().iterator().hasNext());
    assertEquals(2, result.getSize(Result.SizePrecision.FAST_APPROXIMATION, 100));
    assertQuery("select [jcr:path] from [nt:base] where [foo] = 'bar2'", of("/libs/b"));
}
Also used : Result(org.apache.jackrabbit.oak.api.Result) Test(org.junit.Test) AbstractQueryTest(org.apache.jackrabbit.oak.query.AbstractQueryTest)

Example 34 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class UserPrincipalProvider method findPrincipals.

@Nonnull
@Override
public Iterator<? extends Principal> findPrincipals(final String nameHint, final int searchType) {
    try {
        AuthorizableType type = AuthorizableType.getType(searchType);
        StringBuilder statement = new StringBuilder().append(QueryUtil.getSearchRoot(type, config.getParameters())).append("//element(*,").append(QueryUtil.getNodeTypeName(type)).append(')').append("[jcr:like(@rep:principalName,'").append(buildSearchPattern(nameHint)).append("')]");
        Result result = root.getQueryEngine().executeQuery(statement.toString(), javax.jcr.query.Query.XPATH, NO_BINDINGS, namePathMapper.getSessionLocalMappings());
        Iterator<Principal> principals = Iterators.filter(Iterators.transform(result.getRows().iterator(), new ResultRowToPrincipal()), Predicates.notNull());
        if (matchesEveryone(nameHint, searchType)) {
            principals = Iterators.concat(principals, Iterators.singletonIterator(EveryonePrincipal.getInstance()));
            return Iterators.filter(principals, new EveryonePredicate());
        } else {
            return principals;
        }
    } catch (ParseException e) {
        log.debug(e.getMessage());
        return Collections.emptyIterator();
    }
}
Also used : ParseException(java.text.ParseException) AuthorizableType(org.apache.jackrabbit.oak.spi.security.user.AuthorizableType) EveryonePrincipal(org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal) SystemPrincipal(org.apache.jackrabbit.oak.spi.security.principal.SystemPrincipal) Principal(java.security.Principal) Result(org.apache.jackrabbit.oak.api.Result) Nonnull(javax.annotation.Nonnull)

Example 35 with Result

use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.

the class ExcerptTest method nodeExcerpt.

@Test
public void nodeExcerpt() throws Exception {
    Tree contentRoot = root.getTree("/").addChild("testRoot");
    contentRoot.setProperty("foo", "is fox ifoxing");
    contentRoot.setProperty("bar", "ifoxing fox");
    root.commit();
    String query = "SELECT [rep:excerpt],[rep:excerpt(.)] FROM [nt:base] WHERE CONTAINS(*, 'fox')";
    Result result = executeQuery(query, SQL2, NO_BINDINGS);
    Iterator<? extends ResultRow> resultIter = result.getRows().iterator();
    assertTrue(resultIter.hasNext());
    ResultRow firstRow = resultIter.next();
    PropertyValue nodeExcerpt;
    String excerpt1, excerpt2;
    nodeExcerpt = firstRow.getValue("rep:excerpt");
    assertNotNull("rep:excerpt not evaluated", nodeExcerpt);
    excerpt1 = nodeExcerpt.getValue(STRING);
    assertTrue("rep:excerpt didn't evaluate correctly - got '" + excerpt1 + "'", "is <strong>fox</strong> ifoxing".equals(excerpt1) || "ifoxing <strong>fox</strong>".equals(excerpt1));
    nodeExcerpt = firstRow.getValue("rep:excerpt(.)");
    assertNotNull("rep:excerpt(.) not evaluated", nodeExcerpt);
    excerpt2 = nodeExcerpt.getValue(STRING);
    assertEquals("excerpt extracted via rep:excerpt not same as rep:excerpt(.)", excerpt1, excerpt2);
}
Also used : ResultRow(org.apache.jackrabbit.oak.api.ResultRow) Tree(org.apache.jackrabbit.oak.api.Tree) PropertyValue(org.apache.jackrabbit.oak.api.PropertyValue) Result(org.apache.jackrabbit.oak.api.Result) Test(org.junit.Test) AbstractQueryTest(org.apache.jackrabbit.oak.query.AbstractQueryTest)

Aggregations

Result (org.apache.jackrabbit.oak.api.Result)36 ResultRow (org.apache.jackrabbit.oak.api.ResultRow)23 Test (org.junit.Test)20 PropertyValue (org.apache.jackrabbit.oak.api.PropertyValue)15 Tree (org.apache.jackrabbit.oak.api.Tree)15 AbstractQueryTest (org.apache.jackrabbit.oak.query.AbstractQueryTest)13 ParseException (java.text.ParseException)10 Root (org.apache.jackrabbit.oak.api.Root)5 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)5 Nonnull (javax.annotation.Nonnull)4 ExtractionResult (org.apache.jackrabbit.oak.plugins.index.fulltext.ExtractedText.ExtractionResult)3 ArrayList (java.util.ArrayList)2 ContentSession (org.apache.jackrabbit.oak.api.ContentSession)2 QueryEngine (org.apache.jackrabbit.oak.api.QueryEngine)2 Lists.newArrayList (com.google.common.collect.Lists.newArrayList)1 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)1 Closer (com.google.common.io.Closer)1 IOException (java.io.IOException)1 Principal (java.security.Principal)1 Collections (java.util.Collections)1