You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Sandeep Ambule <sa...@gmail.com> on 2020/02/24 04:28:28 UTC
Lucene search not working with osgi RDB DocumentService
Hi ,
i am trying to implement lucene index fulltest search with osgi RDB
documentService,but its not working,
Lucene search working fine if i created repository like below,
Scenario 1: searching working correctly
@Override
protected ContentRepository createRepository() {
return getOakRepo().createContentRepository();
}
Oak getOakRepo() {
// LowCostLuceneIndexProvider provider = new
LowCostLuceneIndexProvider();
LuceneIndexProvider provider = new LuceneIndexProvider();
return new Oak(createInitialContent())
.with(new OpenSecurityProvider())
.with((QueryIndexProvider) provider)
.with((Observer) provider)
.with(new LuceneIndexEditorProvider());
}
private DocumentNodeStore createInitialContent()
{
DocumentNodeStore ds=createRDBStore();
EditorHook hook = new EditorHook(
new CompositeEditorProvider(new NamespaceEditorProvider(),
new TypeEditorProvider()));
OakInitializer.initialize(ds, new InitialContent(), hook);
return ds;
}
public DocumentNodeStore createRDBStore()
{
String jdbcurl="jdbc:postgresql://127.0.0.1:5432/SP05";
String user="postgres";
String pw="manager";
DataSource dataSource = RDBDataSourceFactory.forJdbcUrl(jdbcurl, user,
pw);
DocumentNodeStore store = new
RDBDocumentNodeStoreBuilder().newRDBDocumentNodeStoreBuilder()
.setRDBConnection(dataSource).build();
return store;
}
Scenario 2: searching not working
@Autowired
private NodeStore documentNodeStoreService;
@Override
protected ContentRepository createRepository() {
return getOakRepo().createContentRepository();
}
Oak getOakRepo() {
// LowCostLuceneIndexProvider provider = new
LowCostLuceneIndexProvider();
LuceneIndexProvider provider = new LuceneIndexProvider();
return new Oak(documentNodeStoreService)
.with(new OpenSecurityProvider())
.with((QueryIndexProvider) provider)
.with((Observer) provider)
.with(new LuceneIndexEditorProvider());
}
In this case repository get created but searching not working,
giving error like Traversal query (query without index)
Can you tell me ,what wrong i am doing here?
Code to create Lucene index in both scenario ,
protected void createTestIndexNode() throws Exception {
Tree index = root.getTree("/");
Tree indexDefn = createTestIndexNode(index,
LuceneIndexConstants.TYPE_LUCENE);
TestUtil.useV2(indexDefn);
indexDefn.setProperty(LuceneIndexConstants.TEST_MODE, true);
indexDefn.setProperty(FulltextIndexConstants.EVALUATE_PATH_RESTRICTION,
true);
Tree props = TestUtil.newRulePropTree(indexDefn, "nt:base");
props.getParent().setProperty(FulltextIndexConstants.INDEX_NODE_NAME, true);
TestUtil.enablePropertyIndex(props, "c1/p", false);
TestUtil.enableForFullText(props,
FulltextIndexConstants.REGEX_ALL_PROPS, true);
TestUtil.enablePropertyIndex(props, "a/name", false);
TestUtil.enablePropertyIndex(props, "b/name", false);
TestUtil.enableFunctionIndex(props, "length([name])");
TestUtil.enableFunctionIndex(props, "lower([name])");
TestUtil.enableFunctionIndex(props, "upper([name])");
root.commit();
}
Re: Lucene search not working with osgi RDB DocumentService
Posted by Manfred Baedke <ma...@gmail.com>.
Hi Sandeep,
Maybe I'm missing something, but in scenario 2 it looks like you don't
create the initial content.
Also I'd suggest using oak-dev@jackrabbit.apache.org, not
dev@jackrabbit.apache.org.
Best regards,
Manfred
On 2/24/2020 5:28 AM, Sandeep Ambule wrote:
> Hi ,
>
> i am trying to implement lucene index fulltest search with osgi RDB
> documentService,but its not working,
>
> Lucene search working fine if i created repository like below,
>
> Scenario 1: searching working correctly
>
> @Override
> protected ContentRepository createRepository() {
> return getOakRepo().createContentRepository();
> }
>
> Oak getOakRepo() {
> // LowCostLuceneIndexProvider provider = new
> LowCostLuceneIndexProvider();
> LuceneIndexProvider provider = new LuceneIndexProvider();
> return new Oak(createInitialContent())
> .with(new OpenSecurityProvider())
> .with((QueryIndexProvider) provider)
> .with((Observer) provider)
> .with(new LuceneIndexEditorProvider());
> }
>
>
>
> private DocumentNodeStore createInitialContent()
> {
> DocumentNodeStore ds=createRDBStore();
> EditorHook hook = new EditorHook(
> new CompositeEditorProvider(new
> NamespaceEditorProvider(), new TypeEditorProvider()));
>
> OakInitializer.initialize(ds, new InitialContent(), hook);
> return ds;
> }
>
>
> public DocumentNodeStore createRDBStore()
> {
> String jdbcurl="jdbc:postgresql://127.0.0.1:5432/SP05
> <http://127.0.0.1:5432/SP05>";
> String user="postgres";
> String pw="manager";
> DataSource dataSource = RDBDataSourceFactory.forJdbcUrl(jdbcurl,
> user, pw);
> DocumentNodeStore store = new
> RDBDocumentNodeStoreBuilder().newRDBDocumentNodeStoreBuilder()
> .setRDBConnection(dataSource).build();
> return store;
> }
>
>
>
> Scenario 2: searching not working
>
> @Autowired
> private NodeStore documentNodeStoreService;
>
> @Override
> protected ContentRepository createRepository() {
> return getOakRepo().createContentRepository();
> }
>
> Oak getOakRepo() {
> // LowCostLuceneIndexProvider provider = new
> LowCostLuceneIndexProvider();
> LuceneIndexProvider provider = new LuceneIndexProvider();
> return new Oak(documentNodeStoreService)
> .with(new OpenSecurityProvider())
> .with((QueryIndexProvider) provider)
> .with((Observer) provider)
> .with(new LuceneIndexEditorProvider());
> }
>
>
> In this case repository get created but searching not working,
> giving error like Traversal query (query without index)
>
> Can you tell me ,what wrong i am doing here?
>
>
>
> Code to create Lucene index in both scenario ,
>
> protected void createTestIndexNode() throws Exception {
> Tree index = root.getTree("/");
> Tree indexDefn = createTestIndexNode(index,
> LuceneIndexConstants.TYPE_LUCENE);
> TestUtil.useV2(indexDefn);
>
> indexDefn.setProperty(LuceneIndexConstants.TEST_MODE, true);
> indexDefn.setProperty(FulltextIndexConstants.EVALUATE_PATH_RESTRICTION,
> true);
>
> Tree props = TestUtil.newRulePropTree(indexDefn, "nt:base");
> props.getParent().setProperty(FulltextIndexConstants.INDEX_NODE_NAME,
> true);
> TestUtil.enablePropertyIndex(props, "c1/p", false);
> TestUtil.enableForFullText(props,
> FulltextIndexConstants.REGEX_ALL_PROPS, true);
> TestUtil.enablePropertyIndex(props, "a/name", false);
> TestUtil.enablePropertyIndex(props, "b/name", false);
> TestUtil.enableFunctionIndex(props, "length([name])");
> TestUtil.enableFunctionIndex(props, "lower([name])");
> TestUtil.enableFunctionIndex(props, "upper([name])");
>
> root.commit();
> }
>