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)));
}
}
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)));
}
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"));
}
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();
}
}
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);
}
Aggregations