> First I very sorry form my bad English :/ > > I am new user of Apache Solr. I have read documentation and > check > Google, but I can not find solution of my problem: > I need "words order sensitivity" query, for example I have > two > documents in Solr index: > 1. one something two something three something four > 2. four something three something two something one > and I run query: > > a) > query: one AND two > I want in result: > 1. one something two something three something four - "one" > is before > "two", just like in query > 2. four something three something two something one - I > don't need > this result, but it don't disturb if it is returned > > b) > query: two AND one > I want in result: > 1. four something three something two something one - "one" > is after > "two", just like in query > 2. one something two something three something four - I > don't need > this result, but it don't disturb if it is returned > > Is it possible? If yes, how?
It is possible but not out-of-the-box. You need to override SolrQueryParser so that it returns SpanNearQuery instead of PhraseQuery. SpanNearQuery can do ordered proximity search. With a slop of Integer.MAX you can achieve what you want. "one two"~Integer.MAX Lucene in Action Book has a code listing for this task. (replacing SpanNearQuery with PhraseQuery) You can copy and use it.