From: <jos...@us...> - 2011-07-04 14:38:51
|
Revision: 7945 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=7945&view=rev Author: josegar74 Date: 2011-07-04 14:38:45 +0000 (Mon, 04 Jul 2011) Log Message: ----------- #548: Wildcard after space searches produce IndexOutOfBoundsException Modified Paths: -------------- trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneQueryBuilder.java trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneSearcher.java trunk/web/src/test/java/org/fao/geonet/kernel/search/LuceneQueryTest.java Modified: trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneQueryBuilder.java =================================================================== --- trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneQueryBuilder.java 2011-07-04 14:25:13 UTC (rev 7944) +++ trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneQueryBuilder.java 2011-07-04 14:38:45 UTC (rev 7945) @@ -470,7 +470,9 @@ } } // remove leading * - starsPreserved = starsPreserved.substring(1); + if (!StringUtils.isEmpty(starsPreserved)) { + starsPreserved = starsPreserved.substring(1); + } // restore ending wildcard if (string.endsWith("*")) { Modified: trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneSearcher.java =================================================================== --- trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneSearcher.java 2011-07-04 14:25:13 UTC (rev 7944) +++ trunk/web/src/main/java/org/fao/geonet/kernel/search/LuceneSearcher.java 2011-07-04 14:38:45 UTC (rev 7945) @@ -740,7 +740,9 @@ } } // remove leading * - starsPreserved = starsPreserved.substring(1); + if (!org.apache.commons.lang.StringUtils.isEmpty(starsPreserved)) { + starsPreserved = starsPreserved.substring(1); + } // restore ending wildcard if (string.endsWith("*")) { Modified: trunk/web/src/test/java/org/fao/geonet/kernel/search/LuceneQueryTest.java =================================================================== --- trunk/web/src/test/java/org/fao/geonet/kernel/search/LuceneQueryTest.java 2011-07-04 14:25:13 UTC (rev 7944) +++ trunk/web/src/test/java/org/fao/geonet/kernel/search/LuceneQueryTest.java 2011-07-04 14:38:45 UTC (rev 7945) @@ -113,6 +113,25 @@ } /** + * 'any' parameter with a single token value that has a wildcard. + */ + public void testSingleTokenWildcardWhitespace() { + // create request object + JDOMFactory factory = new DefaultJDOMFactory(); + Element request = factory.element("request"); + Element any = factory.element("any"); + any.addContent("hoeper *"); + request.addContent(any); + // build lucene query input + LuceneQueryInput lQI = new LuceneQueryInput(request); + // build lucene query + Query query = new LuceneQueryBuilder(_tokenizedFieldSet, _numericFieldSet, _analyzer).build(lQI); + // verify query + System.out.println( query.toString()); + assertEquals("+(+any:hoeper +any:*) +_isTemplate:n", query.toString()); + } + + /** * 'any' parameter with a no value. */ public void testNoTokenAny() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |