2010-05-19 4 views

ответ

1

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

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

sql_query = SELECT id, search_text FROM json_object; 

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

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

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

+0

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

1

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

Смежные вопросы