[
https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14645690#comment-14645690
]
Vikas Saurabh edited comment on OAK-3156 at 7/29/15 8:26 AM:
-------------------------------------------------------------
Attaching [^LuceneIndexSuggestionTest.java]. {{testSuggestQueryOnNonNtBase}}
test is for verifying this issue.
was (Author: catholicon):
Attaching [^\LuceneIndexSuggestionTest.java]. {{testSuggestQueryOnNonNtBase}}
test is for verifying this issue.
> [OAK] 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
> Attachments: LuceneIndexSuggestionTest.java
>
>
> 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)