Было бы целесообразно иметь в базе данных поле, содержащее важный текст, хранящийся в объекте 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;
Но вы бы не хотели этого делать?