garakh/kladrapi

OneStringPlugin - результаты отличаются от kladr-api.ru (менее релевантны)

Feodorov opened this issue · 1 comments

Здравствуйте.

Прежде всего хотел поблагодарить за отличный сервис! Спасибо за проделанную работу и за возможность использовать ее в своих проектах.

Обнаружил различия между версией http://kladr-api.ru/api.php и версией в репозитории касательно поиска. kladr-api.ru выдает релевантные результаты:

curl 'http://kladr-api.ru/api.php?limit=1&withParents=1&oneString=1&cityId=7800000000000&query=Невский проспект' | jq
{
  "searchContext": {
    "oneString": "1",
    "cityId": "7800000000000",
    "query": "Невский проспект",
    "limit": 1
  },
  "result": [
    {
      "id": "78000000000088500",
      "name": "Невский",
      "zip": null,
      "type": "Проспект",
      "typeShort": "пр-кт",
      "okato": null,
      "contentType": "street",
      "fullName": "Санкт-Петербург Город, Город Санкт-Петербург, Проспект Невский"
    }
  ]
}

Ограничим поиск Санкт-Петербургом, ищем Невский проспект - результат отличный!

Далее попробуем сделать запрос для сервера, развернутого из текущего репозитория:

curl 'http://.../public/index.php?limit=1&withParents=1&oneString=1&cityId=7800000000000&query=Невский проспект' | jq
{
  "searchContext": {
    "oneString": "1",
    "cityId": "7800000000000",
    "query": "Невский проспект",
    "limit": 1
  },
  "result": [
    {
      "id": "6201000000000",
      "name": "Александро-Невский",
      "zip": "391240",
      "type": "Район",
      "typeShort": "р-н",
      "okato": "61220000000",
      "contentType": "district",
      "fullName": "Рязанская Область, Александро-Невский Район"
    }
  ]
}

Результат не очень релевантный.

Насколько я понимаю, на kladr-api.ru есть какие-то очень хорошие правки поиска в сфинксе. В обоих случаях в сфинксе есть Санкт-Петербург Город, Город Санкт-Петербург, Проспект Невский, но с версией кода в репозитории запрос вида @fullname "Невский проспект*" @cityid 7800000000000 не находит релевантное значение. Видимо, влияет порядок слов или что-то подобное?

PS. Еще обнаружил, что в версии на kladr-api.ru проиндексированы адреса с домами (Челябинская Область, Саткинский Район, Город Бакал, Улица Ленина, 18), чего также нет в текущей версии кода:

curl 'http://kladr-api.ru/api.php?limit=1&oneString=1&query=г.Бакал, ул.Ленина, 18' | jq
{
  "searchContext": {
    "oneString": "1",
    "query": "г.Бакал, ул.Ленина, 18",
    "limit": 1
  },
  "result": [
    {
      "id": "7401700100000150001",
      "name": "18",
      "zip": 456900,
      "type": "дом",
      "typeShort": "д",
      "okato": "75249503000",
      "contentType": "building",
      "fullName": "Челябинская Область, Саткинский Район, Город Бакал, Улица Ленина, 18"
    }
  ]
}

Не подскажите, как можно подправить поиск, чтобы получить результаты, сравнимые с kladr-api.ru?

Нашел причину - я недостаточно хорошо сконфигурировал индекс. Взял конфиг из докер-образа hub.docker.com/r/garakh/kladr/ - все заработало как нужно.