That's not the response I get when I try your query, so I suspect something's not quite right with your test...
But you could also try putting parentheses around the words, like mykeywords:(Compliance+With+Conduct+Standards) Best Erick On Tue, Nov 2, 2010 at 5:25 AM, Tod <listac...@gmail.com> wrote: > On 11/1/2010 11:14 PM, Ken Stanley wrote: > >> On Mon, Nov 1, 2010 at 10:26 PM, Tod<listac...@gmail.com> wrote: >> >> I have a number of fields I need to do an exact match on. I've defined >>> them as 'string' in my schema.xml. I've noticed that I get back query >>> results that don't have all of the words I'm using to search with. >>> >>> For example: >>> >>> >>> >>> q=(((mykeywords:Compliance+With+Conduct+Standards)OR(mykeywords:All)OR(mykeywords:ALL)))&start=0&indent=true&wt=json >>> >>> Should, with an exact match, return only one entry but it returns five >>> some >>> of which don't have any of the fields I've specified. I've tried this >>> both >>> with and without quotes. >>> >>> What could I be doing wrong? >>> >>> >>> Thanks - Tod >>> >>> >>> >> Tod, >> >> Without knowing your exact field definition, my first guess would be your >> first boolean query; because it is not quoted, what SOLR typically does is >> to transform that type of query into something like (assuming your >> uniqueKey >> is "id"): (mykeywords:Compliance id:With id:Conduct id:Standards). If you >> do >> (mykeywords:"Compliance+With+Conduct+Standards) you might see different >> (better?) results. Otherwise, append&debugQuery=on to your URL and you can >> see exactly how SOLR is parsing your query. If none of that helps, what is >> your field definition in your schema.xml? >> >> - Ken >> >> > The field definition is: > > <field name="mykeywords" type="string" indexed="true" stored="true" > multiValued="true"/> > > The request: > > > select?q=(((mykeywords:"Compliance+With+Attorney+Conduct+Standards")OR(mykeywords:All)OR(mykeywords:ALL)))&fl=mykeywords&start=0&indent=true&wt=json&debugQuery=on" > > The response looks like this: > > "responseHeader":{ > "status":0, > "QTime":8, > "params":{ > "wt":"json", > "q":"(((mykeywords:Compliance With Attorney Conduct > Standards)OR(mykeywords:All)OR(mykeywords:ALL)))", > "start":"0", > "indent":"true", > "fl":"mykeywords", > "debugQuery":"on"}}, > "response":{"numFound":6,"start":0,"docs":[ > { > "mykeywords":["Compliance With Attorney Conduct Standards"]}, > { > "mykeywords":["Anti-Bribery","Bribes"]}, > { > "mykeywords":["Marketing Guidelines","Marketing"]}, > {}, > { > "mykeywords":["Anti-Bribery","Due Diligence"]}, > { > "mykeywords":["Anti-Bribery","AntiBribery"]}] > }, > "debug":{ > "rawquerystring":"(((mykeywords:Compliance With Attorney Conduct > Standards)OR(mykeywords:All)OR(mykeywords:ALL)))", > "querystring":"(((mykeywords:Compliance With Attorney Conduct > Standards)OR(mykeywords:All)OR(mykeywords:ALL)))", > "parsedquery":"(mykeywords:Compliance text:attorney text:conduct > text:standard) mykeywords:All mykeywords:ALL", > "parsedquery_toString":"(mykeywords:Compliance text:attorney text:conduct > text:standard) mykeywords:All mykeywords:ALL", > "explain":{ > ... > > As you mentioned, looking at the parsed query its breaking the request up > on word boundaries rather than on the entire phrase. The goal is to return > only the very first entry. Any ideas? > > > Thanks - Tod >