Kladr search module

Full text search through Kladr.

License

License

Categories

Categories

Search Business Logic Libraries
GroupId

GroupId

org.jamel.kladr
ArtifactId

ArtifactId

kladr-search
Last Version

Last Version

0.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

Kladr search module
Full text search through Kladr.
Project URL

Project URL

http://github.com/jamel/kladr
Source Code Management

Source Code Management

http://github.com/jamel/kladr

Download kladr-search

How to add to project

<!-- https://jarcasting.com/artifacts/org.jamel.kladr/kladr-search/ -->
<dependency>
    <groupId>org.jamel.kladr</groupId>
    <artifactId>kladr-search</artifactId>
    <version>0.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.jamel.kladr/kladr-search/
implementation 'org.jamel.kladr:kladr-search:0.0.2'
// https://jarcasting.com/artifacts/org.jamel.kladr/kladr-search/
implementation ("org.jamel.kladr:kladr-search:0.0.2")
'org.jamel.kladr:kladr-search:jar:0.0.2'
<dependency org="org.jamel.kladr" name="kladr-search" rev="0.0.2">
  <artifact name="kladr-search" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.jamel.kladr', module='kladr-search', version='0.0.2')
)
libraryDependencies += "org.jamel.kladr" % "kladr-search" % "0.0.2"
[org.jamel.kladr/kladr-search "0.0.2"]

Dependencies

compile (6)

Group / Artifact Type Version
org.jamel.kladr : kladr-core jar 0.0.2
org.apache.commons : commons-io jar 1.3.2
org.slf4j : slf4j-api jar 1.7.5
org.jamel.kladr : kladr-api jar 0.0.2
org.apache.lucene : lucene-core jar 4.4.0
org.apache.lucene : lucene-analyzers-common jar 4.4.0

Project Modules

There are no modules declared in this project.

КЛАДР

Библиотека для работы с классификатором адресов России (КЛАДР).

1. Модули проекта

  • kladr-api - сущности получаемые из HTTP-сервиса КЛАДР посредством API.
  • kaldr-clent - реализация HTTP-клиента для работы с сервисом КЛАДР
  • kladr-core - базовая функциональность для работы с КЛАДР
  • kladr-search - модуль строящий и читающий полнотекстовый индекс
  • kladr-service - HTTP-сервис, позволяющий посредством API делать запросы в КЛАДР

2. Как использовать

2.1. Использование основной библиотеки

Добавьте в ваш проект зависимость:

<dependency>
    <groupId>org.jamel.kladr</groupId>
    <artifactId>kladr-core</artifactId>
    <version>${kladr-version}</version>
</dependency>

, где kladr-version - номер последней стабильной версии библиотеки (например, 0.0.1). Узнать какая версия является последней можно здесь.

После чего можно будет, например, вывести список всех регионов России:

import java.io.File;

import org.jamel.kladr.KladrReader;
import org.jamel.kladr.data.Region;
import org.jamel.kladr.processors.KladrObjectsProcessor;

public class RegionsPrinter {

    public static void main(String[] args) {
        KladrReader reader = new KladrReader(new File("/tmp/kladr"));
        reader.readKladrTable(new KladrObjectsProcessor() {
            @Override
            public void processRegion(byte regionCode, Region region) {
                System.out.println(regionCode + "  " + region.getName());
            }
        });
    }
}

Выведет:

1  Адыгея
2  Башкортостан
3  Бурятия
...
87  Чукотский
89  Ямало-Ненецкий
99  Байконур

Или пример посложнее. Допустим нам нужно вывести полные адреса (до улицы) в городе Бердск (КЛАДР код 54000002):

import java.io.File;

import org.jamel.kladr.AddressBuilder;
import org.jamel.kladr.KladrReader;
import org.jamel.kladr.cache.KladrCache;
import org.jamel.kladr.data.Street;
import org.jamel.kladr.processors.StreetProcessor;

public class BerdskAddressesPrinter {

    private static final long BERDSK_CODE = 54_000_002;

    public static void main(String[] args) {
        KladrReader reader = new KladrReader(new File("/tmp/kladr"));

        // read table kladr.dbf into cache and create address builder
        KladrCache cache = new KladrCache();
        reader.readKladrTableTo(cache);
        final AddressBuilder builder = new AddressBuilder(cache);

        // process each street
        reader.readStreetTable(new StreetProcessor() {
            @Override
            public void processStreet(long streetCode, Street street) {
                if (street.getCityCode() == BERDSK_CODE) {
                    System.out.println(builder.buildFor(street));
                }
            }
        });
    }
}

Выведет:

обл. Новосибирская, г. Бердск, ул. 30 лет Победы
обл. Новосибирская, г. Бердск, ул. 40 лет Октября
обл. Новосибирская, г. Бердск, пер. Банковский
...
обл. Новосибирская, г. Бердск, ул. Взлетная
обл. Новосибирская, г. Бердск, пер. Дивный
обл. Новосибирская, г. Бердск, пер. Добрый

2.2 HTTP-сервис

Сервис КЛАДР удобно использовать в том случае если вы хотите разместить на своем сайте форму для ввода адреса. Сервис предоставляет JSON API к которому легко привязать любой плагин для автокомплита (в своем примере я использовал Typeahead от Twitter). В действии можно посмотреть здесь.

alt text

2.2.1 Сборка

Для того чтобы получить работающий бинарник нужно собрать "толстый" jar, включающий все зависимости:

TODO: дописать как это сделать

2.2.2 Создание индекса

TODO: дописать как это сделать

2.2.3 Запуск сервиса

TODO: дописать как это сделать

2.2.4 Пример конфигурации nginx

TODO: дописать как это сделать

2.3 Взаимодействие с сервисом по API

TODO: написать http-клиент

Versions

Version
0.0.2
0.0.1