I just noticed Juan's response and I find that I am encountering that very issue in a few cases. Boosting is a good way to put the more relevant results to the top but it is possible to only have the correct results returned?
On Wed, Mar 30, 2011 at 11:51 AM, Brian Lamb <brian.l...@journalexperts.com>wrote: > Thank you all for your responses. The field had already been set up with > positionIncrementGap=100 so I just needed to add in the slop. > > > On Tue, Mar 29, 2011 at 6:32 PM, Juan Pablo Mora <jua...@informa.es>wrote: > >> >> A multiValued field >> >> is actually a single field with all data separated with >> positionIncrement. >> >> Try setting that value high enough and use a PhraseQuery. >> >> >> That is true but you cannot do things like: >> >> q="bar* foo*"~10 with default query search. >> >> and if you use dismax you will have the same problems with multivalued >> fields. Imagine the situation: >> >> Doc1: >> field A: ["foo bar","dooh"] 2 values >> >> Doc2: >> field A: ["bar dooh", "whatever"] Another 2 values >> >> the query: >> qt=dismax & qf= fieldA & q = ( bar dooh ) >> >> will return both Doc1 and Doc2. The only thing you can do in this >> situation is boost phrase query in Doc2 with parameter pf in order to get >> Doc2 in the first position of the results: >> >> pf = fieldA^10000 >> >> >> Thanks, >> JP. >> >> >> El 29/03/2011, a las 23:14, Markus Jelsma escribió: >> >> > orly, all replies came in while sending =) >> > >> >> Hi, >> >> >> >> Your filter query is looking for a match of "man's friend" in a single >> >> field. Regardless of analysis of the common_names field, all terms are >> >> present in the common_names field of both documents. A multiValued >> field >> >> is actually a single field with all data separated with >> positionIncrement. >> >> Try setting that value high enough and use a PhraseQuery. >> >> >> >> That should work >> >> >> >> Cheers, >> >> >> >>> Hi all, >> >>> >> >>> I have a field set up like this: >> >>> >> >>> <field name="common_names" multiValued="true" type="text" >> indexed="true" >> >>> stored="true" required="false" /> >> >>> >> >>> And I have some records: >> >>> >> >>> RECORD1 >> >>> <arr name="common_names"> >> >>> >> >>> <str>man's best friend</str> >> >>> <str>pooch</str> >> >>> >> >>> </arr> >> >>> >> >>> RECORD2 >> >>> <arr name="common_names"> >> >>> >> >>> <str>man's worst enemy</str> >> >>> <str>friend to no one</str> >> >>> >> >>> </arr> >> >>> >> >>> Now if I do a search such as: >> >>> http://localhost:8983/solr/search/?q=*:*&fq={!q.op=AND >> >>> df=common_names}man's friend >> >>> >> >>> Both records are returned. However, I only want RECORD1 returned. I >> >>> understand why RECORD2 is returned but how can I structure my query so >> >>> that only RECORD1 is returned? >> >>> >> >>> Thanks, >> >>> >> >>> Brian Lamb >> >> >