From c2799674b3ce7a66aeb054c7ba9d48015a17196e Mon Sep 17 00:00:00 2001 From: Jack Stdin Date: Sat, 20 Feb 2016 16:56:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=B5?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=B8=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D0=BE=D1=82=D0=BA=D0=B8=D0=B9=20=D0=B0=D0=B4=D1=80?= =?UTF-8?q?=D0=B5=D1=81.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +++++++----------- aore/fias/search.py | 8 ++++---- aore/templates/sphinx/idx_addrobj.conf | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 14163c4..7de6737 100644 --- a/README.md +++ b/README.md @@ -137,20 +137,16 @@ _Внимание_! Только Python 2.7, только PostgreSQL, тольк 1. Настроим конфиг, он лежит в `aore/config/__init__.py`, в этом файле можно изменить `.dev` на `.prod`, отредактировать, соотвественно, dev.py или prod.py: прописать параметры доступа к базе и путь, куда будут сохраняться данные Sphinx; по этому пути дополнительно необходимо создать 3 папки: log, run и data - 2. Создадим базу: -- из архива `sudo -u phias python manage.py -b create -s /tmp/fias_xml.rar` -- из директории `sudo -u phias python manage.py -b create -s /tmp/fias_xml_unpacked` -- онлайн, с сервера ФНС `sudo -u phias python manage.py -b create -s http` + - из архива `sudo -u phias python manage.py -b create -s /tmp/fias_xml.rar` + - из директории `sudo -u phias python manage.py -b create -s /tmp/fias_xml_unpacked` + - онлайн, с сервера ФНС `sudo -u phias python manage.py -b create -s http` Также, можно указать конкретную версию ФИАС _только_ при http загрузке, с ключом `--update-version `, где num - номер версии ФИАС, все доступные версии можно получить, выполнив `manage.py -v`. - 3. Проиндексируем Sphinx: -- Windows: `python manage.py -c -i C://sphinx//indexer.exe -o C://sphinx//sphinx.conf` -- Debian: `sudo python manage.py -c -i indexer -o /usr/local/sphinx/etc/sphinx.conf` - + - Windows: `python manage.py -c -i C://sphinx//indexer.exe -o C://sphinx//sphinx.conf` + - Debian: `sudo python manage.py -c -i indexer -o /usr/local/sphinx/etc/sphinx.conf` 4. Затем запустим searchd: -- Windows: `net start sphinxsearch`, при этом файл настройки должен быть доступен Sphinx'у. -- Debian: `sudo searchd --config /usr/local/sphinx/etc/sphinx.conf` - + - Windows: `net start sphinxsearch`, при этом файл настройки должен быть доступен Sphinx'у. + - Debian: `sudo searchd --config /usr/local/sphinx/etc/sphinx.conf` 5. Настроим WSGI server, я использую nginx + passenger, Вы можете использовать любое приемлемое сочетание. \ No newline at end of file diff --git a/aore/fias/search.py b/aore/fias/search.py index bebde08..2b18353 100644 --- a/aore/fias/search.py +++ b/aore/fias/search.py @@ -35,17 +35,17 @@ class SphinxSearch: self.client_show.SetLimits(0, self.max_result) self.client_show.SetConnectTimeout(3.0) - def __configure(self, index_name, word_len=None): + def __configure(self, index_name, word_len): self.client_sugg.ResetFilters() - if index_name == sphinx_conf.index_sugg and word_len: + if index_name == sphinx_conf.index_sugg: self.client_sugg.SetRankingMode(sphinxapi.SPH_RANK_WORDCOUNT) self.client_sugg.SetFilterRange("len", int(word_len) - self.delta_len, int(word_len) + self.delta_len) self.client_sugg.SetSelect("word, len, @weight+{}-abs(len-{}) AS krank".format(self.delta_len, word_len)) self.client_sugg.SetSortMode(sphinxapi.SPH_SORT_EXTENDED, "krank DESC") else: self.client_show.SetRankingMode(sphinxapi.SPH_RANK_BM25) - #self.client_show.SetSelect("aoid, fullname, @weight AS krank") - #self.client_show.SetSortMode(sphinxapi.SPH_SORT_EXTENDED, "krank DESC") + self.client_show.SetSelect("aoid, fullname, @weight-abs(wordcount-{}) AS krank".format(word_len)) + self.client_show.SetSortMode(sphinxapi.SPH_SORT_EXTENDED, "krank DESC") def __get_suggest(self, word, rating_limit, count): word_len = str(len(word) / 2) diff --git a/aore/templates/sphinx/idx_addrobj.conf b/aore/templates/sphinx/idx_addrobj.conf index d8b10d2..431122e 100644 --- a/aore/templates/sphinx/idx_addrobj.conf +++ b/aore/templates/sphinx/idx_addrobj.conf @@ -10,7 +10,7 @@ source {{index_name}} sql_query = {{!sql_query}} sql_field_string = fullname - sql_attr_uint = len + sql_attr_uint = wordcount sql_attr_string = aoid sql_attr_string = aoguid }