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)