Hey Guys, Have a novice type question, regarding how to create a query by ORing multiple terms.
Currently, the query we are creating is a boosting query using following code: BoostingQuery boosQuery = new BoostingQuery(getHotelIdFilterQuery(hotelIdStr),baseQuery,2.0f); Wherein, getHotelIdFilterQuery() takes a hotelId and creates a TermQuery like--> "hotId:3453" Then it is combined with the baseQuery in boosQuery to get a query like--> [hotel.id_t:3453/(+(rev.headline:lakefront^2.0 | rev.comments:lakefront^2.0)~0.01 ())^0.0] Now, I wanted to create a boosQuery with multiple hotelIds ORed with each other like--> [hotel.id_t:342432/hotel.id_t:3453/(+(rev.headline:lakefront^2.0 | rev.comments:lakefront^2.0)~0.01 ())^0.0] So, how do I pass these multiple termQueries ORed with each other to make BoostQuery? Thanks! -Ankush Goyal -----Original Message----- From: Erick Erickson [mailto:erickerick...@gmail.com] Sent: Tuesday, April 28, 2009 4:05 PM To: solr-user@lucene.apache.org Subject: Re: Multiple Queries Have you considered indexing the reviews along with the hotels right in the hotel index? That way you would fetch the reviews right along with the hotels... Really, this is another way of saying "flatten your data" <G>... Your idea of holding all the hotel reviews in memory is also viable, depending upon how many there are. you'd pay some startup costs, but that's what caching is all about. Given your current index structure, have you tried collecting the hotel IDs, and submitting a query to your review index that just ORs together all the IDs and then parsing that rather than calling your review index for one hotel ID at a time? Best Erick On Tue, Apr 28, 2009 at 4:32 PM, Ankush Goyal <ankush.go...@orbitz.com>wrote: > Hi, > > I have been trying to solve a performance issue: I have an index of hotels > with their ids and another index of reviews. Now, when someone queries for a > location, the current process gets all the hotels for that location. > And, then corresponding to each hotel-id from all the hotel documents, it > calls the review index to fetch reviews associated with that particular > hotel and so on it repeats for all the hotels. This process slows down the > request significantly. > I need to accumulate reviews according to corresponding hotel-ids, so I > can't just fetch all the reviews for all the hotel ids and show them. Now, I > was thinking about fetching all the reviews for all the hotel-ids and then > parse all those reviews in one go and create a map with hotel-id as key and > list of reviews as values. > > Can anyone comment on whether this procedure would be better or worse, or > if there's better way of doing this? > > --Ankush Goyal >