Witam.
Tworzę w PHP projekt strony z ogłoszeniami akwarystycznymi - www.akwa-market.pl
Chciałem aby strona miała charakter międzynarodowy.
Mam utworząną bazę danych i tabele, jedna z nich jest z wpisami ogłoszeń. Mam też wbudowaną wyszukiwarkę słów.
Przyjmijmy, że wpisałem słowo - żółw
Wywołuję polecenie:
SELECT FROM * table_name WHERE item REGEXP '[[:<:]]{$keyword}[[:>:]]';
lub:
SELECT FROM * table_name WHERE item REGEXP '{$keyword}';
i znajduję rekord w bazie, który zawiera to słowo.
Problem pojawia się gdy wpiszę słowo po rosyjsku, np. Привет
Wyszukiwarka nie pokazuje rekordu z zadanym rosyjskim słowem.
Po połączeniu do bazy wywołuję.
mysqli_set_charset($db, "utf8mb4");
mysqli_query( $db, "SET NAMES utf8mb4");
mysqli_query( $db, "SET CHARACTER SET utf8mb4");
Próbowałem metodę porównywania napisów ustawić na utf8mb4_bin lub na utf8mb4_unicode_ci
ale to nie daje pomyślnych rezultatów. Wciąż daje się wyszukać jedynie słowa zawierające znaki alfabetu łacińskiego w tym znaki diakrytyczne języków europejskich.
Nie wiem, jak ustawić zapytanie aby móc wyszukiwać słowa w innych językach np. właśnie rosyjskim, chińskim, czy arabskim.
Chodzi mi o zastosowanie tego razem z REGEXP najlepiej, aby wyszukiwać kilka wyrazów jednocześnie rozdzielonych znakiem I czyli OR, gdzie np zmienna $keyword przyjmuje wartość:
$keyword = 'Привет | Андрей';
P.S. Dodatkowo nie wiem jak rozwiązać sprawę gdy ktoś wpisze - zółw przez z bez kropki, aby dało się wyszukać słowo żółw. Lub nawet napisane całkiem bez wciśnięcia ALT np. zolw
Pomoże ktoś? Strona już prawie funkcjonuje normalnie, ale właśnie wyszukiwarka kuleje i nie wiem za bardzo jak to rozwiązać.