[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Saurabh updated OAK-3156: --- Fix Version/s: 1.2.14 > 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 >Priority: Blocker > Fix For: 1.4, 1.3.9, 1.2.14 > > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Saurabh updated OAK-3156: --- Fix Version/s: 1.3.8 > 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 >Priority: Blocker > Fix For: 1.3.8 > > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Saurabh updated OAK-3156: --- Priority: Blocker (was: Major) > 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 >Priority: Blocker > Fix For: 1.3.8 > > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Saurabh updated OAK-3156: --- Attachment: OAK-3156-take2.patch Attaching a slightly modified [version|^OAK-3156-take2.patch] of the previous patch. [~teofili], the failures were there because I had set path=null for virtual rows. This patch sets '/' for virtual rows (subsequently I undid removal of PathCursor wrapping). [~tmueller], I'm not sure if we should update virtual row documentation to say that virtual rows need to set path or should we fix other places in code which expect path despite a row being virtual. > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vikas Saurabh updated OAK-3156: --- Attachment: OAK-3156.patch Attaching [patch|^OAK-3156.patch]. It prequires OAK-3230's [patch|https://issues.apache.org/jira/secure/attachment/12750456/OAK-3230-query-engine-should-support-virtual-rows.patch]. The changes in current patch: * Lucene rows mark {{isVirtual}} as required * Removed unnecessary wrapping of PathCursor from LucenePropertyIndex (apart from cleanup path cursor insisted that there's path being set which didn't match with current issue's requirement of virtual rows) * Moved test case to Jcr as we needed real jcr security api (non {{OpenSecurityProvider}} and SecurityProviderImpl isn't available in oak-lucene) > 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.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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Chetan Mehrotra updated OAK-3156: - Description: 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} {code} works, but if we change nodetype to {{nt:unstructured}} like: {code:xml} {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 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}}. was: 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} {code} works, but if we change nodetype to {{nt:unstructured}} like: {code:xml} {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 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}}. > 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 > > > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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(suggestedWor
[jira] [Updated] (OAK-3156) Lucene suggestions index definition can't be restricted to a specific type of node
[ https://issues.apache.org/jira/browse/OAK-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Chetan Mehrotra updated OAK-3156: - Summary: Lucene suggestions index definition can't be restricted to a specific type of node (was: [OAK] Lucene suggestions index definition can't be restricted to a specific type of node) > 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} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {code} > works, but if we change nodetype to {{nt:unstructured}} like: > {code:xml} > jcr:primaryType="oak:QueryIndexDefinition" > async="async" > compatVersion="{Long}2" > type="lucene"> > > > > jcr:primaryType="nt:unstructured" > analyzed="{Boolean}true" > name="description" > propertyIndex="{Boolean}true" > useInSuggest="{Boolean}true"/> > > > > > {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 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)