I am working with apache-solr-3.6.0 on windows machine. I would like to search for two words with certain number of words apart (No more than this number).
For example:
Consider the following phrases, I would like to search for Daisy & exam with no more than 2 words apart.
Daisy has exam.
Daisy has an exam.
Daisy has a math exam.
Daisy has a difficult math exam.
I searched for such thing and I tried Term Proximity.
http://localhost:8983/solr/select/?q="Daisy exam"~2&version=2.2&start=0&rows=10&indent=on&debugQuery=true
The result that I need should be the phrase: Daisy has an exam. But using the above criteria, the result was the last 3 phrase.
So any ideas to use an exact number of words apart?
Check out the related question here:
Solr proximity ordered vs unordered
When you say ‘no more than 2 words apart’, then you should have both first and second phrase matched. Then your query would be
"Daisy exam"~1, which will match Daisy exam and an insertion between them (which is one change: changesexamposition from 2 to 3).In order to prevent “Daisy exam” from the matched result, you can add
-"Daisy exam"to your query. Alternatively you may addfq=-"Daisy exam"to your query string params.