Теперь в приоритете наиболее короткий адрес.

This commit is contained in:
Jack Stdin 2016-02-20 16:56:15 +03:00
parent 955c72c01c
commit c2799674b3
3 changed files with 12 additions and 16 deletions

View File

@ -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>`, где 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, Вы можете использовать любое приемлемое сочетание.

View File

@ -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)

View File

@ -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
}