SOLR сортировка по IN Query - PullRequest
2 голосов
/ 23 января 2012

Мне было интересно, можно ли отсортировать по порядку, что вы запрашиваете документы у SOLR. Я выполняю запрос на основе In и просто хотел бы, чтобы SOLR возвращал их в соответствии с заказанным мной порядком.

В (4,2,3,1) должны вернуть мне документы, заказанные 4,2,3,1.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Вам нужно Сортировка в solr, чтобы упорядочить их по полю.

Я предполагаю, что «На основе запроса» означает что-то вроде: получить документы, чьи fieldx имеют значения в (val1, val2). Вы можете поле как многозначное поле и фасет на этом поле. Фасетный запрос - это «находящийся в поиске», из коробки (так сказать), он также может выполнять более сложные поиски.


Отредактировано по запросу OP:

Обновление документа с многозначным полем в JSON здесь . Смотри строчку

"my_multivalued_field": [ "aaa", "bbb" ]   /* use an array for a multi-valued field */

Что касается выполнения фасетного запроса , отметьте this .

Вам нужно сделать одно или несколько операторов fq:

&fq=field1:[400 to 500]
&fq=field2:johnson,thompson

Также ознакомьтесь с тем фактом (в ссылке выше), что вам нужно указывать на сохраненные, а не индексированные поля.

0 голосов
/ 25 декабря 2013

Вы можете легко применить сортировку с помощью QueryOptions и сортировку полей (свойство ExtraParams - я сортирую по сохраненному полю по убыванию):

 var results = _solr.Query(textQuery,
                new QueryOptions
                {
                    Highlight = new HighlightingParameters
                    {
                        Fields = new[] { "*" },
                    },
                    ExtraParams = new Dictionary<string, string>
                    {
                        {"fq", dateQuery},
                        {"sort", "savedate desc"}
                    }
                });
...