Maybe you should change one or both of the "MUST" to "SHOULD". And it's better to switch the order of the 2 subqueries.
On Tue, Jan 28, 2020 at 2:23 PM vas aj <vasudevan.a...@gmail.com> wrote: > Thanks Dan for the quick help. > However the query failed. > > Working on the same. > > On Tue, 28 Jan 2020, 19:55 Dan Smith, <dsm...@pivotal.io> wrote: > >> I think you could probably use a BooleanQuery to do this. Something like >> this, although I haven't tested it. Your LuceneQuery1 just results in a >> call to StandardQueryParser.parse, so you can combine that with your >> spatial query: >> >> LuceneQuery<Long, Station> luceneQuery2 = >> luceneService >> .createLuceneQueryFactory() >> .create("stationNameIndex", "stations-region", index -> { >> BooleanQuery query = new BooleanQuery(); >> query.add(new StandardQueryParser().parse(queryString, name), >> BooleanQuery.Occur.MUST); >> query.add(SpatialHelper.findWithin(-122.8515139, 45.5099231, >> 0.5), , BooleanQuery.Occur.MUST); >> return query; >> } >> >> On Tue, Jan 28, 2020 at 11:36 AM vas aj <vasudevan.a...@gmail.com> wrote: >> >>> Hi team, >>> >>> I want to execute a *LuceneQuery* that searches both a queryString(E.g. >>> "station:Piccadilly*") as well as nearest station within .5 miles.(E.g. >>> SpatialHelper.findWithin(lat, long, 0.5)) >>> >>> In other words, is there any means of combining *luceneQuery1* & >>> *luceneQuery2* and executing them as >>> Collection<Station> nearestStations = *luceneQuery*.findValues(); >>> >>> where luceneQuery = luceneQuery1 + luceneQuery2 >>> >>> *LuceneQuery1* >>> LuceneQuery<Long, Station> luceneQuery1 = >>> luceneService >>> .createLuceneQueryFactory() >>> .setLimit(100) >>> .create("stationNameIndex", "stations-region", queryString, >>> "name"); >>> >>> *LuceneQuery2* >>> LuceneQuery<Long, Station> luceneQuery2 = >>> luceneService >>> .createLuceneQueryFactory() >>> .create("stationNameIndex", "stations-region", index -> >>> SpatialHelper.findWithin(-122.8515139, 45.5099231, 0.5); >>> >>> Regards >>> Aj >>> >>