Использовать sqlite для поисковой индексации? - PullRequest
2 голосов
/ 18 февраля 2012

Как вы думаете, это хорошая идея?

Как хранить ключевые слова из реальной базы данных в базе данных sqlite вместе с идентификаторами объектов.Поэтому, когда вы выполняете поиск, вы делаете это с помощью sqlite, чтобы получить идентификаторы найденных объектов, а затем запрашиваете реальную базу данных, используя эти идентификаторы.

пример объекта из базы данных mysql:

ID   slug       title        content
_____________________________________________________________________________
5    bla-bla    Bla Bla      I know what you did last summer

это будет проиндексировано в sqlite, например:

ID   keywords
_____________________________________________________________________________
5    know, summer, last, what

или, может быть,

   keyword     objects
   _____________________
   know        5, 6
   summer      5
   lst         5, 7, 10
   ...

, но вы получите огромную базу данных, вероятно, с ~ 15000 записей с учетом английского словаря

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

но вы получите огромную базу данных, вероятно, с ~ 15000 записей

15 000 записей - это кусок пирога для MySQL и большинства других СУБД. Что вам нужно , так это настроить текст в таблицах MyIsam, чтобы вы могли воспользоваться преимуществами полнотекстовой индексации и поиска .

.
1 голос
/ 18 февраля 2012

Идея базы данных заключается в том, что она способна выполнять операции с запросами очень быстро и эффективно.

SQLite, с другой стороны, является идеальным инструментом для целей разработки, поскольку вам не нужно настраивать экземпляр БД. Однако с этим возникают определенные недостатки, такие как то, что он не может обрабатывать много одновременных соединений одновременно эффективно или вообще.

Поэтому предложенный подход, на мой взгляд, не самый лучший, так как SQLite не сможет обрабатывать много запросов и, следовательно, разрушит всю цель базы данных.

Возможно, было бы намного лучше просто поддерживать высокопроизводительную БД, которая могла бы обрабатывать все запросы. И, как правило, существует множество способов оптимизации БД, таких как mysql, postgresql и т. Д.

EDIT

Просто мысль. Может быть, разбить строку на слова и рассматривать их как ключевые слова - не лучший способ. Проблема в том, что поиск будет просто возвращаться, если где-то в системе использовалось определенное ключевое слово, однако это не будет учитывать контекст и приоритет, из которого пришло ключевое слово. Я не знаю много о поиске, но было бы полезно иметь какую-то систему рангов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...