Указание вручную, как построить индекс? - PullRequest
0 голосов
/ 26 февраля 2011

Я заглядываю в Thinking Sphinx, чтобы выяснить, может ли он решить проблему с индексацией.Похоже, что у него очень специфический API для указания того, какие поля индексировать в модели.Мне не нравится иметь этот уровень абстракции на моем пути без возможности обойти его.Дело в том, что я не верю, что Сфинкс сможет правильно интерпретировать мою модель, поскольку эта модель может обладать любым мыслимым свойством.По сути, я хочу кодировать JSON в RDBMS.В некотором смысле, я пытаюсь заставить СУБД вести себя как MongoDB (СУБД имеют функции, без которых я не хочу обойтись).Если бы 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 голосов
/ 01 марта 2011

Обычно, когда вы указываете, что хотите индексировать, то есть когда вы хотите создать свой собственный индекс, вы используете часть Map Map / Reduce. CouchDB поддерживает именно это. Единственная проблема, с которой я столкнулся в Couch, заключается в том, что я хочу запрашивать другие объекты документа в качестве основы для моего Map / Reduce, поскольку эти документы будут содержать метаданные о том, как я хочу построить свои индексы. Однако это противоречит принципу Map / Reduce, поскольку вы должны отображать документ изолированно без внешних данных. Если вам нужны внешние данные, они будут перенесены в ваши документы.

0 голосов
/ 26 февраля 2011

Как указал Matchu в комментариях, Sphinx обычно взаимодействует напрямую с базой данных.Вот почему Thinking Sphinx построен так, как он есть.

Однако Sphinx (но не Thinking Sphinx) также может принимать форматы данных XML - поэтому, если вы хотите пойти по этому пути, не стесняйтесь.Вам нужно будет понять основную структуру Sphinx гораздо глубже, чем если бы вы использовали обычные реляционные базы данных / ActiveRecord и подход Thinking Sphinx. Загадка может быть полезна для построения решения, но вам все равно нужно сначала понять сам Сфинкс.

...