JPA Выберите запрос, не возвращая результаты с одним буквенным словом - PullRequest
0 голосов
/ 11 июня 2018

У меня есть запрос, который при получении слова, начинающегося с однобуквенного слова, за которым следует пробел, а затем другое слово (например, «T Distribution»), не возвращает результатов.В то время как заданный «Распределение» возвращает только результаты, включая результаты для «T Распределение».Это то же самое поведение со всеми поисковыми терминами, начинающимися с однобуквенного слова, за которым следует пробел, а затем другое слово.

Проблема возникает, когда поисковый термин имеет такой шаблон: "[однобуквенный] [пробел] [буква / слово]».пример: "o ring".

В чем может быть проблема, если оператор LIKE не работает правильно в этом случае?

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

@Cacheable(value = "filteredConcept")
@Query("SELECT NEW sina.backend.data.model.ConceptSummaryVer04(s.id, s.arabicGloss, s.englishGloss, s.example, s.dataSourceId,
s.synsetFrequnecy, s.arabicWordsCache, s.englishWordsCache, s.superId, s.categoryId, s.dataSourceCacheAr, s.dataSourceCacheEn,
s.superTypeCasheAr, s.superTypeCasheEn, s.area, s.era, s.rank, s.undiacritizedArabicWordsCache, s.normalizedEnglishWordsCache, 
s.isTranslation, s.isGloss, s.arabicSynonymsCount, s.englishSynonymsCount) FROM Concept s 
where s.undiacritizedArabicWordsCache LIKE %:searchTerm% AND data_source_id != 200 AND data_source_id != 31")
List<ConceptSummaryVer04> findByArabicWordsCacheAndNotConcept(@Param("searchTerm") String searchTerm, Sort sort);

theрезультат запроса к самой базе данных: ссылка на скриншот

результаты в базе данных возвращаются независимо от регистра букв: ссылка на скриншот

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Установите searchTerm="%your_word%" и используйте его в запросе следующим образом:

... s.undiacritizedArabicWordsCache LIKE :searchTerm ...
0 голосов
/ 21 августа 2019

Я решил эту проблему.Это произошло из-за конфигурации по умолчанию полнотекстового индекса в базе данных mysql, которая по умолчанию установлена ​​в 2 (ft_min_word_len = 2).

Я изменил это и перестроил индекс.Затем по запросу были возвращены однобуквенные слова.

12.9.6 Тонкая настройка полнотекстового поиска MySQL

0 голосов
/ 11 июня 2018

Используйте некоторые цитаты:

 LIKE '%:searchTerm%'; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...