Как Sphinx Search будет индексировать / обрабатывать файлы JSON?

0

У меня есть база данных mysql, в которой хранятся в основном объекты JSON. Я думаю использовать Sphinx для поиска через него - но мне было интересно, как бы я индексировал и извлекал эти json-объекты?

Теги:
sphinx

2 ответа

1
Лучший ответ

Было бы разумно иметь поле в базе данных, которое содержит важный текст, хранящийся в объекте JSON. Если ваши объекты JSON являются книгами, я бы сохранил заголовок, автора и издателя в виде обычного текста в поле базы данных search_text, поскольку вы передаете JSON в базу данных.

Ваш SQL-запрос для индексатора может выглядеть следующим образом

sql_query = SELECT id, search_text FROM json_object;

Я не тестировал, как Sphinx обрабатывает сырой JSON, хотя он может удалить HTML через настройку html_strip = 1 conf. Если вы хотели что-то ДЕЙСТВИТЕЛЬНО грязное, вы могли бы стянуть пунктуацию и синтаксис JavaScript из поля json с помощью последовательности вложенных функций MySQL REPLACE() во время индексирования.

sql_query = SELECT id, REPLACE( REPLACE(raw_json, ']', ' '), '[', ' ') as search_text FROM json_object;

Но вы не хотели бы этого делать?

  • 0
    Спасибо большое за советы! ха-ха, нет, я не очень хочу этого делать, но это отличная альтернатива, если все остальное терпит неудачу. хммм
1

Еще лучшее решение: используйте XML-канал. Sphinx позволяет указать script для запуска для сборки канала. Используйте этот script, чтобы выбрать ваши данные, декодировать строки json и выплевывать их как XML. Вы также можете включить свою схему в XML, что даст вам преимущество в динамически сгенерированной схеме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню