You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Vikas Saurabh (JIRA)" <ji...@apache.org> on 2019/04/24 11:35:00 UTC
[jira] [Commented] (OAK-8271) Lucene path transformed result
doesn't accomodate wildcards in relative path
[ https://issues.apache.org/jira/browse/OAK-8271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16825040#comment-16825040 ]
Vikas Saurabh commented on OAK-8271:
------------------------------------
The issue is that lucene implementation tries to match relative path fragment with path of property (as stored in index) and returns only if relative path fragment is a suffix. So, a diff like:
{noformat}
diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
index 08196b428f..231ac10296 100644
--- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
+++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
@@ -1027,10 +1027,7 @@ public class FulltextIndexPlanner {
@Nullable
public String transformPath(String path){
if (isPathTransformed()){
- // get the base path
- // ensure the path ends with the given
- // relative path
- if (!path.endsWith(parentPathSegment)) {
+ if (getDepth(path) < parentDepth) {
return null;
}
return getAncestorPath(path, parentDepth);
{noformat}
fixes the issue.
I feel this (fix) is the right approach anyway as this then leaves the responsibility of matching relative path with whatever we support (wildcard with prefix maybe) to query engine. [~tmueller] wdyt?
> Lucene path transformed result doesn't accomodate wildcards in relative path
> ----------------------------------------------------------------------------
>
> Key: OAK-8271
> URL: https://issues.apache.org/jira/browse/OAK-8271
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: lucene
> Reporter: Vikas Saurabh
> Assignee: Vikas Saurabh
> Priority: Minor
>
> {{LucenePropertyIndex}} support answering a query with property constraint on a relative path if there's an property (non-relative) is indexed on {{nt:base}}.
> e.g. with an index def such as
> {noformat}
> + /oak:index/fooIndex/indexRules/nt:base/properties
> + foo
> - propertyIndex=true
> {noformat}
> we can answer queries such as
> {noformat}
> /jcr:root/a//element(*, some:type)[b/foo='bar']
> /jcr:root/a//element(*, some:type)[b/c/foo='bar']
> {noformat}
> In the same spirit it could also support query with wildcard in relative path fragment
> {noformat}
> /jcr:root/a//element(*, some:type)[b/*/foo='bar']
> {noformat}
> .... but it doesn't work currently.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)