lugensa / scorched

Sunburnt offspring solr client
MIT License
27 stars 19 forks source link

Exact search (double quotes) ignored #23

Open lguariento opened 8 years ago

lguariento commented 8 years ago

I have a weird problem. I'm querying a Solr 5.3 instance with Django through Scorched. It all works great as far as I don't ask an exact-match query. In other words,

q=something something else

returns exactly the same result as:

q="something something else"

The culprit, as far as I can see, is the actual query which Django throws at Solr. In fact, for the second case this is:

q=\"something+something+else\"

So, in other words, the " character is escaped. Am I right? How do I tell Solr that when I query something between double quotes I want an exact match?

In the Solr admin webpage it all works well, i.e. if I search for "something something else" I get the correct result.

I'm not sure this is a Scorched problem or not. Does it have something to do with filters/tokenizers (e.g. solr.MappingCharFilterFactory)?

mehaase commented 8 years ago

Try this:

from scorched.strings import DismaxString
...
solr.query(q=DismaxString('"something something else"')

Scorched will not escape any characters inside a DismaxString.