Поиск по близости с использованием фраз в Solr - PullRequest
13 голосов
/ 02 июня 2010

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

"Government Spending" ~2

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

Ответы [ 3 ]

16 голосов
/ 15 августа 2010

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

This is more about traffic between Solr servers themselves 

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

"подробнее о solr" ~ 2

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

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

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

"подробнее о самих серверах" ~ 2

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

11 голосов
/ 02 ноября 2010

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

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

"(слово1) (слово2) (слово3)" ~ 10

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

"(\" фраза1 \ ") (\" фраза2 \ ")" ~ 10

7 голосов
/ 11 ноября 2013

Начиная с Solr 4, это возможно с SurroundQueryParser .

например. запросить, где «вторая фраза» следует за «первой фразой» не позднее, чем через 3 слова после:

3W(phrase W one, phrase W two)

Чтобы запросить «фразу два» рядом с 5 словами «фразы один»:

5N(phrase W one, phrase W two)
...