Как добавить Пространственный Solr к запросу Solrnet

Я выполняю Solr на своей машине окон с помощью причала. Я загрузил Пространственный Плагин Solr, который мне наконец удалось разбудить и выполнение. Я также использую Solrnet для запросов против Solr из моего asp.net mvc проекта.

Теперь, добавление данных в мой индекс, кажется, хорошо работает, и SpatialTierUpdateProcessorFactory действительно работает также.

Проблема:

Как я добавляю пространственный запрос к своему нормальному запросу, пользующемуся библиотекой Solrnet. Я попытался добавить его с помощью параметра "ExtraParams", но это не работало очень хорошо.

Вот пример того, что я пытался объединить пространственный запрос с запросом диапазона данных. Запрос диапазона дат хорошо работает без пространственного запроса, присоединенного к нему:

new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery);

который приводит к следующему запросу против Solr:

(({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z])

И сообщение об ошибке, которое я возвращаю:

Удаленный сервер возвратил ошибку: (400) Плохой Запрос.

SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars
eException: Cannot parse '(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit=
km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:09:49Z TO 2011-05-0
7T13:09:49Z])': Encountered "  "lng=-2.6257 "" at line 1, column 2
4.
Was expecting:
    "}" ...

Теперь, вещь состоит в том, если я использую страницу Solr Web Admin и выполняю следующий запрос против нее, все хорошо работает.

{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London

Что лучший/корректный путь состоит в том, чтобы назвать пространственное использование функции SolrNet. Лучший способ состоит в том, чтобы так или иначе добавить, что бит запроса вручную к строке запроса и так как?

5
задан miguelbgouveia 16 June 2016 в 12:06
поделиться

1 ответ

Используйте класс LocalParams для представления LocalParams в Solr:

solr.Query(new LocalParams {
    {"type", "spatial"},
    {"lat", "-51.5224"},
    {"long", "-2.6257"},
    {"radius", "10000"},
    {"unit", "km"},
    {"calc", "arc"},
    {"threadCount", "2"},
} + Query.Field("text").Is("London"));

Это доступно начиная с SolrNet 0.3.0b1.

5
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: