MYSQL не работает MATCH AGAINST
Запрос: @Query("SELECT m FROM Message WHERE MATCH (textMessage) AGAINST (':word')")
Ошибка: Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: AGAINST near line 1, column 63 [SELECT m FROM server.entity.Message WHERE MATCH (textMessage) AGAINST (':word')]
Что ему не нравится в моем against?
UPD: Исправил следующим образом:
@Query(
value = "SELECT * FROM Message WHERE MATCH(textMessage) AGAINST (:word IN BOOLEAN MODE)",
nativeQuery = true)
List<Message> getMessageByWordIndexed(@Param("word") String word);
Но почему то этот запрос все равно не использует индексы...
UPD2: Понял, что написал глупость по поводу индексов.
Ответы (1 шт):
Итак, AGAINST в запросе не работает по той же причине, что и не работает * после SELECT: в hql это не предусмотрено (ссылка на мануал с синтаксисом HQL).
Для того, что бы этот запрос работал, надо создать нативный запрос (на мысль меня подтолкнул это мануал).