Использование Sphinx в первый раз - настройка ключа sql_query - PullRequest
1 голос
/ 24 ноября 2011

Я сейчас практикуюсь в Sphinx, я не так уж много сделал, кроме конфигурации, которую я пытаюсь сделать. Клавиша sql_query оставляет меня в некотором замешательстве относительно того, что туда поставить, я прочитал в Sphinx документацию sql_query , но мне кажется, что это не освобождает меня от мысли, что делать, так как у меня много SELECT в мое веб-приложение, и я хочу использовать Sphinx для своего поиска, и SQL часто меняется (после фильтрации поиска пользователя).

Что касается моего поиска с использованием MySQL, я хочу интегрировать Sphinx в мое веб-приложение, если sql_key не является обязательным, нужно ли ожидать, что весь поисковый SQL-запрос будет помещен в это поле, или я выберу необходимые поля из таблиц для начала переиндексации?

Может ли кто-нибудь указать мне правильное направление, чтобы я мог добиться успеха с помощью Sphinx и моего веб-приложения.

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

sql_query является обязательным, он запускается sphinx для получения данных, которые вы хотите проиндексировать из mysql. Вы можете иметь соединения, условия и т. Д., Должны быть действительными SQL-запросами. У вас должно быть что-то вроде «SELECT id, field1, field2, fieldx from table». id должен быть основным id. Каждая строка, возвращаемая этим запросом, считается документом (который возвращается sphinx при поиске). Если у вас есть несколько таблиц (которые сильно различаются по значению - пользователи, статьи и т. Д.) - вам нужно создать индекс для каждой. Прочитайте руководства здесь: http://sphinxsearch.com/info/articles/, чтобы понять, как работает сфинкс.

0 голосов
/ 25 ноября 2011

Вы можете создать SQL-запрос, чтобы получить объединенный набор записей из базы данных.Если вы объединяете несколько таблиц и делаете запрос, чтобы выбрать лучший набор результатов, вы можете сделать это и с помощью Sphinx.

Вы можете столкнуться с несколькими проблемами из-за существующей структуры таблицы в базе данных.* Например:

  • Базовая таблица не имеет целочисленного поля первичного ключа

    Создать новую таблицу с двумя полями.Одно для поля целочисленного идентификатора, а другое - для хранения первичного ключа базовой таблицы.Сделайте внутреннее соединение с этой таблицей и выберите поле id из этой таблицы.Например.SELECT t1.id, t2.name, t2.description, t2.content FROM table_new t1 INNER JOIN table_2 t2 WHERE t1.document_id = t1.thread_id INNER JOIN REST_OF_YOUR_SELECT_QUERY

    ta.id предназначен для внутренней поисковой системы Sphinx.

  • Вы фильтруете данные, помещая предложение WHERE и фильтруя

    Вы можете сделать это в Sphinx, задав фильтры динамически в зависимости от условий.

  • Вы выбираете и объединяете разные таблицы, чтобы получить результаты

    Это также можно сделать, установив различные источники и индексы в соответствии с вашими требованиями.

Надеюсь, это поможет вам понять, что вам нужно добавить и изменить вначните думать, как поисковая система Sphinx может быть настроена в соответствии с вашими требованиями.Просто приходите сюда снова, если вам нужна дополнительная помощь.

...