PHP / MySQL: сопоставление / против остановленного слова

Вот мой запрос:

SELECT * from description WHERE (match(description) AGAINST ( '+will +smith' in boolean mode)) 

Я знаю, что will - это заглавное слово, поэтому я получаю пустой результат. Как будет работать, если я все еще могу использовать оба слова для этого запроса? Нужно ли мне каким-то образом сбежать от этого?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Предполагая, что вы используете полнотекстовый поиск с InnoDB, решение, очевидно, состоит в том, чтобы определить вашу собственную таблицу, хранящую стоп-слова. Затем вы можете поместить в таблицу настроенный набор слов и использовать переменную конфигурации innodb_ft_server_stopword_table, чтобы ваш экземпляр MySQL использовал вашу настраиваемую таблицу перед созданием полнотекстового индекса. Таким образом, слово, которое вы хотите проиндексировать, будет включено при построении полнотекстового индекса.

См. https://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html

Но это глобальная переменная, поэтому она повлияет на создание всего полнотекстового индекса для всех таблиц в этом экземпляре MySQL. Я полагаю, вы могли бы установить innodb_ft_server_stopword_table в свою настраиваемую таблицу, построить свой полнотекстовый индекс, а затем вернуть опцию в обычное значение. Но это было бы сложно, потому что каждый раз, когда вы перестраиваете свой полнотекстовый индекс (например, во время изменения таблицы или оптимизации таблицы), он вернется к стоп-словам по умолчанию.

Другие вопросы по теме