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 > >