Return-Path: Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: (qmail 9002 invoked from network); 2 Mar 2011 11:04:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 2 Mar 2011 11:04:05 -0000 Received: (qmail 84456 invoked by uid 500); 2 Mar 2011 11:04:05 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 84004 invoked by uid 500); 2 Mar 2011 11:04:01 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 83991 invoked by uid 99); 2 Mar 2011 11:04:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Mar 2011 11:04:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Mar 2011 11:03:58 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 053C24B332 for ; Wed, 2 Mar 2011 11:03:37 +0000 (UTC) Date: Wed, 2 Mar 2011 11:03:37 +0000 (UTC) From: "Stefan Guggisberg (JIRA)" To: dev@jackrabbit.apache.org Message-ID: <1844156506.7657.1299063817018.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <10520268.5224.1298993616946.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] Updated: (JCR-2906) Multivalued property sorted by last/random value MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/JCR-2906?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stefan Guggisberg updated JCR-2906: ----------------------------------- Component/s: (was: jackrabbit-core) indexing > Multivalued property sorted by last/random value > ------------------------------------------------ > > Key: JCR-2906 > URL: https://issues.apache.org/jira/browse/JCR-2906 > Project: Jackrabbit Content Repository > Issue Type: Improvement > Components: indexing > Affects Versions: 2.2.0 > Environment: Windows 7, Sun JDK 1.6.0_23 > Reporter: Paul Lysak > Labels: multivalued, sort > > Sorting on multivalued property may produce incorrect result because sorting is performed only by last value of multivalued property. > Steps to reproduce: > 1. Create multivalued field in repository. Example from nodetypes file: > onParentVersion="COPY" protected="false" multiple="false"> > 2. Create few records so that all records except one would contain single value for MyProperty and one record would contain > first value which is greater then of any other record and the second value is somewhere in the middle. Here is an example: > 1st record: "aaaa" > 2nd record: "cccc" > 3rd record: "dddd", "bbbb" > 3. Run some query which sorts Example of XPath query: > //*[...here are some criteria...] order by @MyProperty ascending > The query would return documents in such order: > "aaaa" > "dddd", "bbbb" > "cccc" > which is not expected order (expected same order as they were entered - as "aaaa" < "cccc", "cccc" < "dddd") > After some digging I found out that it happens because method > org.apache.jackrabbit.core.query.lucene.SharedFieldCache.getValueIndex > (called from org.apache.jackrabbit.core.query.lucene.SharedFieldSortComparator.SimpleScoreDocComparator constructor) > returns only last Comparable of the document. Here is overwrites previous value: > retArray[termDocs.doc()] = getValue(value, type); > I tried to concatenate comparables (just to check if it would work for my case): > if(retArray[termDocs.doc()] == null) { > retArray[termDocs.doc()] = getValue(value, type); > } else { > retArray[termDocs.doc()] = > retArray[termDocs.doc()] + " " + getValue(value, type); > } > But it didn't worked well either - TermEnum returns terms not in the same order as JackRabbit returns values of multivalued field > (as an example ["qwer", "asdf"] may become ["asdf", "qwer"] ). So, simple concatenation doesn't help. -- This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira