PHP и MySQL поиск по множеству столбцов - PullRequest
2 голосов
/ 25 августа 2009

Мне нужен способ поиска по 50+ столбцам, как varchar, так и int, в конкретной таблице. Я видел, как люди рекомендуют Lucene и Sphinx, но я понятия не имею, как их использовать, и полнотекстовый MySQL не позволит мне объединить более 16 столбцов или столбцов varchar и int.

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

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

0 голосов
/ 25 августа 2009

Вы можете рассмотреть возможность поворота стола и его нарезки. Возьмите все свои столбцы varchar и сохраните данные в одной таблице "Search_Strings"; сделать то же самое для столбцов int:

оригинальный стол

id
always_field1
always_field2
varstring1
...
varstringx
int1
...
inty

new main_table (то же количество строк, что и в исходной таблице, но очень мало столбцов)

id
always_field1
always_field2 

Search_Strings (

id (FK to main_table)
old_column_name
string_value

Search_Ints

id (FK to main_table)
old_column_name
int_value

При такой настройке вам нужен полнотекстовый индекс только для string_value. Извините, я ничего не могу предложить Сфинксу или Люсене, так как я не знаком с ними.

...