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
>

Reply via email to