php mysql описание поиска по ключевым словам

Я создаю веб-сайт, который пользователи загружают изображения и пишут описание для него.
Я хочу, чтобы пользователи могли искать описание, которое они имеют в виду, для изображения, которое они хотят получить.

Сначала я решил преобразовать описание, введенное пользователем при загрузке изображения, в ключевые слова и связать ключевые слова с изображением, в этом случае, когда пользователи выполнят поиск описания, позже введенное ими описание будет преобразовано в ключевые слова и каким-то образом будут генерироваться синонимы для ключевых слов, которые будут все искать по ключевым словам в БД.

Недавно я прочитал о MySQL полнотекстового поиска. Я создал таблицу с описаниями и идентификаторами изображений и попробовал пару запросов, используя функцию полнотекстового поиска. Похоже, что в большинстве поисков результаты не возвращаются из-за ограничения длины слова и стоп-слов.
Вот мой тестовый запрос:

SELECT * FROM descriptions WHERE MATCH (description) AGAINST ('same' IN BOOLEAN MODE);

В таблице есть запись с описанием, содержащая ключевое слово «same», но результаты не возвращаются.

Мой вопрос: лучше ли использовать «LIKE% ключевые слова%» в таблице описания или использовать FTS в таблице описания или придерживаться подхода таблицы ключевых слов?

0

Решение

С LIKE у вас есть три подхода.

1) Если он содержит все слова в одном и том же порядке (Ключевые слова: один самолет)

SELECT * FROM descriptions WHERE description LIKE('%One airplane%');

2) Если он содержит все слова, но порядок не имеет значения

SELECT * FROM descriptions WHERE description LIKE('%One%') AND description LIKE('% airplane%');

3) Если он содержит некоторые слова

SELECT * FROM descriptions WHERE description LIKE('%One%') OR description LIKE('% airplane%');

Теперь вы можете выбрать, насколько строго вы хотите быть с поисками.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]