[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14730744#comment-14730744 ]
Vikas Saurabh commented on OAK-3156: ------------------------------------ [~tmueller], [~teofili] can we get to a consensus about which approach to take: # Make suggest queries to return paths and fix {{isVirtual}} documentation to state that virtual rows can have non-null/non-"" paths while the semantics of those paths are undefined # Unsupport xpath for suggest query and remove test case + remove {{WHERE jcr:path='/'}} conditions from sql ones (I think we'd need to update documentation as well... not sure of its process though... do we need to deprecate first before removing support?) The [patch|^OAK-3156-take2.patch] implements option#1 above (without documentation fix). If required I can prepare a patch for option#2. > Lucene suggestions index definition can't be restricted to a specific type of > node > ---------------------------------------------------------------------------------- > > Key: OAK-3156 > URL: https://issues.apache.org/jira/browse/OAK-3156 > Project: Jackrabbit Oak > Issue Type: Bug > Components: lucene > Reporter: Vikas Saurabh > Assignee: Tommaso Teofili > Attachments: LuceneIndexSuggestionTest.java, OAK-3156-take2.patch, > OAK-3156.patch > > > While performing a suggestor query like > {code} > SELECT [rep:suggest()] as suggestion FROM [nt:unstructured] WHERE > suggest('foo') > {code} > Suggestor does not provide any result. In current implementation, > [suggestions|http://jackrabbit.apache.org/oak/docs/query/lucene.html#Suggestions] > in Oak work only for index definitions for {{nt:base}} nodetype. > So, an index definition like: > {code:xml} > <lucene-suggest > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > <indexRules jcr:primaryType="nt:unstructured"> > <nt:base jcr:primaryType="nt:unstructured"> > <properties jcr:primaryType="nt:unstructured"> > <description > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > </properties> > </nt:base> > </indexRules> > </lucene-suggest> > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > <lucene-suggest > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > <indexRules jcr:primaryType="nt:unstructured"> > <nt:unstructured jcr:primaryType="nt:unstructured"> > <properties jcr:primaryType="nt:unstructured"> > <description > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > </properties> > </nt:base> > </indexRules> > </lucene-suggest> > {code} > , it won't work. > The issue is that suggestor implementation essentially is passing a pseudo > row with path=/.: > {code:title=LucenePropertyIndex.java} > private boolean loadDocs() { > ... > queue.add(new LuceneResultRow(suggestedWords)); > ... > {code} > and > {code:title=LucenePropertyIndex.java} > LuceneResultRow(Iterable<String> suggestWords) { > this.path = "/"; > this.score = 1.0d; > this.suggestWords = suggestWords; > } > {code} > Due to path being set to "/", {{SelectorImpl}} later filters out the result > as {{rep:root}} (primary type of "/") isn't a {{nt:unstructured}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)