手动指定如何构建索引?

时间:2011-02-26 00:09:53

标签: ruby json indexing sphinx

我正在研究Thinking Sphinx因为它有可能解决索引问题。看起来它有一个非常specific API来告诉它在模型上索引哪些字段。我不喜欢以我的方式拥有这层抽象而不能回避它。事情是我不相信Sphinx能够正确地解释我的模型,因为这个模型可以有任何可以想象的属性。基本上,我想在RDBMS中编码JSON。在某种程度上,我希望使RDBMS像MongoDB一样(RDBMSes具有我不想要的功能)。如果可以使用TS或其他索引来理解我的模型,这可能会起作用。是否可以手动为TS提供键/值对?

"person.name.first" => "John", "person.name.last" => "Doe", "person.age" => 32, 
"person.address" => "123 Main St.", "person.kids" => ["Ed", "Harry"]

是否有另一个索引工具可以从Ruby使用来索引JSON?

(顺便说一句,我已经探索了各种各样的NoSQL数据库。我正在努力解决一系列非常具体的要求。)

2 个答案:

答案 0 :(得分:0)

正如Matchu在评论中指出的那样,Sphinx通常直接与数据库进行交互。这就是为什么Thinking Sphinx的构建就像它一样。

然而,Sphinx(但不是Thinking Sphinx)也可以接受XML数据格式 - 所以如果你想沿着这条路走下去,请随意。与使用普通关系数据库/ ActiveRecord和Thinking Sphinx方法相比,您将必须更深入地理解底层Sphinx结构。 Riddle可能对构建解决方案很有用,但您仍需要首先了解Sphinx本身。

答案 1 :(得分:0)

基本上,当您指定要索引的内容时 - 也就是说,当您想要构建自己的索引时 - 您正在使用Map / Reduce的Map部分。 CouchDB正是支持这一点。我遇到Couch的唯一问题是我想查询其他文档对象作为我的Map / Reduce的基础,因为这些文档将包含有关我如何构建索引的元数据。这违背了Map / Reduce的内容,但是您必须隔离地映射文档而不使用外部数据。如果您需要外部数据,则会将其非规范化为您的文档。