У меня есть сайт для объявлений с примерно 30 категориями объявлений.
Я нахожусь на сцене, где мне нужно строить таблицы MySQL и индексировать их с помощью SOLR. Каждая строка в таблице имеет около 15 полей...
Я ищу производительность!
Интересно, какой из этих двух методов работает лучше всего:
1. Поместите одну таблицу MySQL для каждой категории, значение 30 таблиц, а затем добавьте несколько индексов в SOLR (это будет означать, что если пользователь хочет выполнить поиск только в одной конкретной категории, поиск таблицы/индекса, таким образом, набирает производительность (я думаю). Однако, если пользователь одновременно ищет ВСЕ категории, тогда нужно будет искать все таблицы/индексы.)
2. Имеют одну и только одну таблицу MySQL и только один индекс в SOLR.
Спасибо
Предполагая, что все типы объявлений имеют одну и ту же структуру, я бы сделал следующее:
Сохраняйте текст в одной таблице вместе с другим полем для категории (и другими полями для любой другой информации, связанной с категорией).
В Solr создайте индекс, в котором есть текстовое поле, поле категории и поле PK. Поля текста и категории будут индексироваться, но не сохраняться, а поле PK (сохранение первичного ключа, соответствующего вашей таблице MySQL) будет храниться, но не индексироваться.
Разрешить пользователю выполнять два вида поиска: одно с текстом и одно с текстом и категорией. Для последней категория должна быть точным совпадением. Поиск Solr возвращает список PK, который позволит вам извлекать документы из MySQL.
Вы не увидите значительного улучшения производительности, разделив ваш индекс на 30 индексов, потому что Solr/Lucene уже очень эффективен при поиске данных через свои инвертированные индексы. Указание названия категории достаточно.