Я работаю над проектом, в котором я использую MySQL MATCH AGAINST.Я использовал ранее в другом проекте без каких-либо проблем и использую тот же базовый код, за исключением того, что у меня странное поведение.Единственная реальная разница в том, что я использую MariaDB вместо MySQL.
Ниже показано, как определяется моя таблица
CREATE TABLE `temp_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`LogID` int(11) NOT NULL,
`LogReceived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Host` int(11) NOT NULL,
`LogName` varchar(100) NOT NULL,
`LogLine` text NOT NULL,
PRIMARY KEY (`id`),
KEY `IDXLogID` (`LogID`,`LogReceived`,`Host`),
FULLTEXT KEY `IDXLogLine` (`LogLine`)
) ENGINE=MyISAM AUTO_INCREMENT=5838772 DEFAULT CHARSET=latin1;
Один из столбцов, по которым я выполняю полнотекстовый поиск, содержит следующее:
19/06/2019 19:01:18: Took 0 seconds to read lines for log 'Log Agent'
Если я выполняю запрос следующим образом (LogLine - столбец с полнотекстовым поиском):
SELECT * FROM log_agent.temp_logs WHERE MATCH(LogLine) AGAINST ('+Log' IN BOOLEAN MODE);
Но приведенный выше запрос не возвращает результатов, даже если показановыше значения столбца содержится Log
.Если я пытаюсь изменить +Log
на +seconds
, он возвращает строку, так почему он находит seconds
, а не Log
, опять же, если я изменяю +Log
для +Agent
, строки возвращаются, так что их неткажется какой-то рифмой или причиной того, что он делает.
Я пытался удалить IN BOOLEAN MODE
, так как раньше мне это не нужно, но без разницы.