我有一个主要存储JSON对象的mysql数据库。我正在考虑使用Sphinx搜索它 - 但我想知道如何索引和检索这些json对象?
答案 0 :(得分:1)
在数据库中包含一个包含存储在JSON对象中的重要文本的字段是明智的。如果您的JSON对象是书籍,那么当您将JSON提交到数据库时,我会将标题,作者和发布者以纯文本形式存储在数据库字段search_text
中。
您对索引器的SQL查询可能如下所示
sql_query = SELECT id, search_text FROM json_object;
我还没有测试过Sphinx如何处理原始JSON,虽然它可以通过html_strip = 1
conf设置剥离HTML。如果你想要一些非常脏的东西,你可以在索引时使用一系列嵌套的MySQL字符串REPLACE()函数从json字段中去除标点符号和JavaScript语法。
sql_query = SELECT id, REPLACE( REPLACE(raw_json, ']', ' '), '[', ' ') as search_text FROM json_object;
但你不想这样做吗?
答案 1 :(得分:1)
更好的解决方案:使用an XML pipe。 Sphinx允许您指定要运行以构建管道的脚本。使用该脚本选择数据,解码json字符串,然后将其吐出为XML。您还可以在XML中包含您的模式,这将为您提供动态生成模式的好处。