Как Sphinx Search будет индексировать / обрабатывать файлы JSON? - PullRequest
0 голосов
/ 19 мая 2010

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

Ответы [ 2 ]

1 голос
/ 20 марта 2011

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

1 голос
/ 21 мая 2010

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

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

...