Мне нужен способ поиска по 50+ столбцам, как varchar, так и int, в определенной таблице. Я видел, как люди рекомендуют Lucene и Sphinx, но я понятия не имею, как их использовать, а полнотекстовый MySQL не позволит мне объединить более 16 столбцов или оба столбца varchar и int.
PHP и MySQL выполняют поиск по множеству столбцов
Ответы (2)
Если ваша таблица не обновляется часто или допустима некоторая задержка перед тем, как изменения будут отражены в поиске, возможно, вы могли бы создать периодически регенерируемую производную таблицу, которая объединяет все ваши столбцы в LONGTEXT
и имеет полнотекстовый индекс для этого .
Возможно, вы захотите рассмотреть возможность поворота стола и его небольшого измельчения. Возьмите все ваши столбцы varchar и сохраните данные в одной таблице "Search_Strings"; сделайте то же самое для столбцов int:
исходная таблица
id
always_field1
always_field2
varstring1
...
varstringx
int1
...
inty
новая main_table (то же количество строк, что и исходная таблица, но очень мало столбцов)
id
always_field1
always_field2
Строки_Поиска (
id (FK to main_table)
old_column_name
string_value
Search_Ints
id (FK to main_table)
old_column_name
int_value
При такой настройке вам нужен полнотекстовый индекс только для string_value. Извините, я не могу ничего предложить по Sphinx или Lucene, так как я с ними не знаком.