Domanda

I'm having dificulties to execute a search in Solr. My Solr has a Multivalued field like this document below:

<int name="id">2166324592435</int>
...others fields
<arr name="Series">
   <str>The Walking Dead<\str>
   <str>Game of Thrones<\str>
<\arr>

The Multivalued field Series has the Tv serie which the document references. In the example above, my document says about The Walking Dead and Game of Thrones. I can have documents with one, two or more series or even no series.

What I want to do is search in Solr. I want to give the series that I want and Solr should returns the documents that says about my query. I tryed but I couldn't do it. I tryed the following:

q=series:The Walking Dead or series:Game of Thrones or ...&wt=json

I think I'm doing wrong. What's the correctly way to do it?

Thanks in advance

Thiago

È stato utile?

Soluzione

In addition to @user1452132 's answer -

When you are searching q=series:The Walking Dead, only the is searched across the series field while the walking dead is search across the default search field.

The query formed would be series:the OR text:(Walking Dead)

You can debug the Query using the debugQuery=on in your request url.

You can use Dismax query handler to make it more manageable.

Altri suggerimenti

Try something like this:
series:("The Walking Dead" OR "Game of Thrones")

Use in fq parameter (filter query),

E.g

    name:("Java" OR "Python")
    name:("Java" AND "Web")

    // multivalued fields
    author_ids:(1733 OR 58)
    author_ids:(1733 AND 58)

Solr url encoding:

  • ':' become '%3A'
  • space become '+'

Thus, you might get a url like this:

http://localhost:8983/solr/xxx/select?q=programming&fq=title%3A("Java"+AND+"web")&wt=json&indent=true&defType=edismax&qf=title&stopwords=true&lowercaseOperators=true

Depending on what the intent of the search is try the following two searches

series:"The Walking Dead" OR series:"Game of Thorns"

series:(The Walking Dead) OR series:(Game of Thorns)

Please read solr query syntax and the underlying Lucene query syntax

I think your the actual problem is using OR as lowercase. When you do something like that, The or value is searched in defaultTextField. Also don't forget to put quotes if there's a whitespace in your query - and you're looking for an exact match.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top