Назад | Перейти на главную страницу

Solr перечисляет все записи, но сначала соответствующие записи fq

Я использую solr 4.0 с разъемом DIH jdbc. У меня есть поле с именем code с несколькими значениями, разделенными точкой с запятой (;). Я пытаюсь перечислить результаты поиска, которые соответствуют запросу поля (fq), которые должны быть указаны вверху, а остальные должны быть указаны ниже. Таким образом, это не просто фильтрующий запрос для перечисления только совпадающего запроса (fq), но совпавший запрос должен быть указан первым, а остальные результаты должны быть перечислены позже. Для большей ясности ниже приведен пример,

Пусть id, name, code - это названия полей:

id=1
name=pebbles
code=465;888;256

id=2
name=paradise
code=802;326;786

id=3
name=blue sea
code=888;221

id=4
name=taj
code=123;568;332

Я использую Solr Admin, когда ищу code:*888* в fq, как показано ниже,

q=*:*
fq=code:*888*   (I also tried code:[*888* TO *])

он перечисляет только две записи (идентификаторы 1 и 3), которые когда-либо совпадают с 888 в поле кода. Но это не то, что я ищу в данном случае, я хочу, чтобы он перечислял все (четыре) записи с верхними записями как записи соответствия fq.

Я хочу, чтобы они были перечислены в следующем порядке,

id=1
name=pebbles
code=465;888;256

id=3
name=blue sea
code=888;221

id=2
name=paradise
code=802;326;786

id=4
name=taj
code=123;568;332

У кого-нибудь есть идеи ?. Любой, у кого есть соответствующее руководство, будет очень полезным!

Спасибо!

Это решается двумя способами: OR и edismax

Администратор Solr:

с участием ИЛИ

q=*:* OR code:*888*

(http://192.168.1.10:8983/solr/core10/select?q=*%3A*+OR+code%3A*888*&wt=xml)

с участием Edismax

q=*:*
Check the box "edismax"
bq=code:*888*

(http://192.168.1.10:8983/solr/core10/select?q=*%3A*&wt=xml&defType=edismax&bq=code%3A*888*)