Я использую 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*)