Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql niemieckie akcenty niewrażliwe wyszukiwanie w wyszukiwaniach pełnotekstowych

Kiedy definiujesz poszczególne CHARACTER SETS dla swoich kolumn zastępujesz sortowanie ustawione domyślnie na poziomie tabeli.

Każda z Twoich kolumn ma domyślny latin1 sortowanie (czyli latin1_swedish_ci ). Możesz to zobaczyć, uruchamiając SHOW CREATE TABLE .

W FULLTEXT zapytania, indeksowane kolumny mają COERCIBILITY z 0 , czyli wszystkie zapytania pełnotekstowe są konwertowane na sortowanie używane w indeksie, a nie odwrotnie.

Musisz usunąć CHARACTER SET definicje z Twoich kolumn lub jawnie ustaw wszystkie kolumny na latin1_german_ci :

CREATE TABLE `hotels` (
  `HotelNo` varchar(4) NOT NULL default '0000',
  `Hotel` varchar(80) NOT NULL default '',
  `City` varchar(100) default NULL,
  `CityFR` varchar(100) default NULL,
  `Region` varchar(50) default NULL,
  `RegionFR` varchar(100) default NULL,
  `Country` varchar(50) default NULL,
  `CountryFR` varchar(50) default NULL,
  `HotelText` text,
  `HotelTextFR` text,
  `tagsforsearch` text,
  `tagsforsearchFR` text,
  PRIMARY KEY  (`HotelNo`),
  FULLTEXT KEY `fulltextHotelSearch` (`HotelNo`,`Hotel`,`City`,`CityFR`,`Region`,`RegionFR`,`Country`,`CountryFR`,`HotelText`,`HotelTextFR`,`tagsforsearch`,`tagsforsearchFR`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

INSERT
INTO    hotels (hotelText, HotelTextFR, tagsforsearch, tagsforsearchFR)
VALUES  ('text', 'text', 'graubünden', 'tags');

SELECT  *
FROM    hotels
WHERE   MATCH (`HotelNo`,`Hotel`,`City`,`CityFR`,`Region`,`RegionFR`,`Country`,`CountryFR`, `HotelText`, `HotelTextFR`, `tagsforsearch`, `tagsforsearchFR`)
AGAINST (CONVERT('+graubunden' USING latin1) COLLATE latin1_german1_ci IN BOOLEAN MODE)
ORDER BY
        Country ASC, Region ASC, City ASC;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WFLYJCA0041:Nie udało się załadować modułu dla sterownika [com.mysql] na Jboss 7 z bazą danych MySQL

  2. MySQL — nie można przejść do wiersza 0 w indeksie wyników MySQL

  3. sqljocky synchronicznie odpytuje bazę danych

  4. Wstaw do wielu tabel w jednym zapytaniu

  5. Czy mysql ma odpowiednik funkcji analitycznych Oracle?