Solr - Поиск близости с использованием фраз

Я использую поисковый запрос Solr довольно часто, чтобы искать слова в диапазоне specifeid друг от друга, например

"Government Spending" ~2

Мне было интересно, есть ли способ выполнить поиск близости, используя фразу и слово или две фразы. Это возможно? Если да, то какой синтаксис?

Спасибо в Advance Ruth

Ответ 1

Это кажется "несколько" выполнимым. Рассмотрим этот текст:

This is more about traffic between Solr servers themselves 

"больше трафика между solr" ~ 2

больше о между solr ~ ~ 2

Даже если вы измените порядок работы:

"больше о solr между" ~ 2" ~ 2

Но слишком далеко друг от друга и он перестает работать:

"больше о самих серверах" ~ 2

Я думаю, что если это не сработает, вероятно, не будет ТРУГОГО сделать собственный обработчик запросов, который сделает это. Я думаю, вам может понадобиться определить новый синтаксис, предположительно что-то вроде ("phrase one" "phrase two") ~2. Я бы предположил, что если вы shingling, и вы создаете запрос Lucene, где есть токен только "фразы один" и другой из "фразы два", которые имеют определенную близость, я думаю, что это сработает. (конечно, вам нужно будет сделать вызов lucene java, вы не можете просто передать запрос (прочитайте это http://lucene.apache.org/java/2_2_0/api/index.html)).

Ответ 2

Из коробки я обнаружил способ выполнить поиск близости Solr, используя более одного слова или фразы, см. ниже

например. с тремя словами:

"(word1) (word2) (word3)" ~ 10

например. с двумя фразами: (обратите внимание, что двойная кавычка должна быть экранирована)

"(\" phrase1\ ") (\" phrase2\ ")" ~ 10

Ответ 3

Так как Solr 4 возможно с SurroundQueryParser.

например. для запроса, где "фраза два" следует "фраза одна" не более 3 слов после:

3W(phrase W one, phrase W two)

Запрос "фразы два" в непосредственной близости от 5 слов фразы "1":

5N(phrase W one, phrase W two)