Вопрос по Sphinx

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Вопрос по Sphinx

Сообщение vitalik1183 »

Ребят, нужно сделать поиск по сайту. Установил сфинкс, настроил конфиги. Вопрос. Вот вводит человек слово "тест" и нужно чтобы он искал по всей базе, а не по конкретному индексу. Как это сделать? Или можно объединить индексы?

Конкретно интересует для: https://github.com/yiisoft/yii2-sphinx# ... -providers

Спасибо!
Yii2!
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Вопрос по Sphinx

Сообщение vitalik1183 »

Подозреваю, что можно объединить индексы и поиск тогда будет идти по всем сразу. Но как к провайдеру подключить?
А если все индексы объединить в один, такое можно? :)

Разобрался, можно в секцию source указать несколько индексов.
Yii2!
@ntiq
Сообщения: 6
Зарегистрирован: 2017.06.25, 22:17

Re: Вопрос по Sphinx

Сообщение @ntiq »

vitalik1183 писал(а): 2014.12.25, 14:47 Разобрался, можно в секцию source указать несколько индексов.
Как? можно ссылку на доки?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Вопрос по Sphinx

Сообщение vitalik1183 »

Код: Выделить всё

source medical
{
    # Параметры подключения к БД
    type = mysql
    sql_host = localhost
    sql_user = user
    sql_pass = pass
    sql_db = db
    sql_port = 3306

    # Установим кодировку для работы с БД
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET CHARACTER SET utf8

    # Время простоя (sleep)
    sql_ranged_throttle = 0

    sql_field_string = name
    sql_field_string = anons
    sql_field_string = text
    sql_attr_string = alias
    sql_attr_string = thumb
    sql_attr_string = created_at
    sql_attr_string = module
}

source medical_disease : medical
{
    # Запрос выборки данных для индексации
    sql_query = SELECT id, name, anons, text, alias, thumb, created_at, 'diseases' AS module FROM disease WHERE active = "1" AND published_at <= CURRENT_TIMESTAMP
}

source medical_medication : medical
{
    # Запрос выборки данных для индексации
    sql_query = SELECT id, name, anons, text, alias, thumb, created_at, 'medications' AS module FROM drug WHERE active = "1" AND published_at <= CURRENT_TIMESTAMP
}

source medical_symptoms : medical
{
    # Запрос выборки данных для индексации
    sql_query = SELECT id, name, anons, text, alias, thumb, created_at, 'symptoms' AS module FROM symptom WHERE active = "1" AND published_at <= CURRENT_TIMESTAMP
}

source medical_news : medical
{
    # Запрос выборки данных для индексации
    sql_query = SELECT id, name, anons, text, alias, thumb, created_at, 'news' AS module FROM news WHERE active = "1" AND published_at <= CURRENT_TIMESTAMP
}

index medical_search
{
    # Источники
    source = medical_disease
    source = medical_medication
    source = medical_symptoms
    source = medical_news
    path = /var/lib/sphinx/medical_search
    docinfo = extern
    mlock = 0

    # Использование английского и русского стемминга
    morphology = stem_en, stem_ru

    # Минимальная длина индексируемого слова
    min_word_len = 2

    # Таблица символов
    charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

    # Минимальная длина инфикса (префикс в том числе)
    min_infix_len = 2

    # Позволяет на ряду с морфологически нормализованной формой хранить и оригинальное слово в индексе
    index_exact_words = 1
}
Yii2!
Ответить