Как вы можете прочитать из заголовка, я работаю над проектом, который должен предложить опцию поиска. Пользователь должен ввести несколько отдельных ключевых слов, и результаты должны быть перечислены по релевантности. Поскольку моя база данных содержит около 1–2 тыс. Строк, мне нужно, чтобы это было как можно точнее.
Исследователи указали на создание большего количества таблиц, которые содержат теги для строк. Я сделал прототип для этого, но это будет занимать много времени, чтобы сделать это для каждой отдельной строки, потому что база данных уже существует. Я читал, что создание какого-то «гусеничного» было бы возможным? Я также слышал, что использование ISAM-баз данных будет вариант.
Может кто-нибудь предложить мне возможное решение? Или, может быть, несколько примеров?
У меня есть базовое понимание PHP и MySQL.
С уважением,
Force0234
Вам нужно добавить ПОЛНЫЙ ТЕКСТ ИНДЕКС для всех ваших полей поиска и использования МАТЧ … ПРОТИВ ключевые слова
SELECT * FROM searchable_table WHERE MATCH(searchable_field) AGAINST('Keyword');
SELECT *, MATCH(searchable_field, searchable_field2) AGAINST('Keyword') as Relevance FROM searchable_table WHERE MATCH(searchable_field, searchable_field2) AGAINST('Keyword');
Примечание: вы можете использовать несколько полей в МАТЧ(…) и использовать его в предложении SELECT для получения релевантности. Не стесняйтесь использовать его дважды, MySQL оптимизирует запрос.
Пожалуйста, обратитесь к документации MySQL http://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html, http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
Других решений пока нет …