Какой метод мне следует использовать;Индексирование базы данных MySQL с помощью SOLR - PullRequest
0 голосов
/ 18 января 2010

У меня есть сайт объявлений, около 30 категорий объявлений.

Я нахожусь на этапе, когда мне нужно создавать таблицы MySQL и индексировать их с помощью SOLR. Каждая строка таблицы содержит около 15 полей ...

Я ищу представление!

Интересно, какой из этих двух методов работает лучше всего:

1 - иметь одну таблицу MySQL для каждой категории, означает 30 таблиц , а затем иметь несколько индексов в SOLR (это будет означать, что если пользователь хочет искать только в одной определенной категории, то эта таблица / index выполняется поиск, таким образом, повышая производительность (я думаю). Однако, если пользователь ищет ВСЕ категории одновременно, то все таблицы / индексы должны быть найдены.)

2 - иметь одну и только одну таблицу MySQL и только один индекс в SOLR.

Спасибо

1 Ответ

0 голосов
/ 18 января 2010

Предполагая, что все различные типы объявлений имеют одинаковую структуру, я бы сделал следующее:

Сохраните текст в одной таблице вместе с другим полем для категории (и другими полями для любой другой информации, связанной с категорией).

В Solr создайте индекс, содержащий текстовое поле, поле категории и поле PK. Поля текста и категории будут проиндексированы, но не сохранены, а поле PK (где хранится первичный ключ, соответствующий вашей таблице MySQL) будет сохранено, но не проиндексировано.

Разрешить пользователю выполнять два вида поиска: один с просто текстом, а другой с текстом и категорией. Для последнего категория должна быть точным совпадением. Поиск Solr вернет список PK, который позволит вам затем получать документы из MySQL.

Вы не увидите значительного улучшения производительности, разбив свой индекс на 30 индексов, потому что Solr / Lucene уже очень эффективно находит данные по инвертированным индексам. Достаточно указать название категории.

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