sql >> Databáze >  >> RDS >> Mysql

Mysql německé akcenty necitlivé vyhledávání ve fulltextovém vyhledávání

Když definujete jednotlivé CHARACTER SETS u sloupců přepíšete řazení, které jste nastavili jako výchozí na úrovni tabulky.

Každý z vašich sloupců má výchozí latin1 řazení (což je latin1_swedish_ci ). Můžete to zobrazit spuštěním SHOW CREATE TABLE .

V FULLTEXT dotazy, indexované sloupce mají COERCIBILITY z 0 , to znamená, že všechny fulltextové dotazy jsou převedeny na řazení použité v indexu, nikoli naopak.

Musíte odstranit CHARACTER SET definice z vašich sloupců nebo explicitně nastavte všechny sloupce 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. Smazat všechny záznamy kromě nejnovějšího?

  2. Optimalizace dotazu MySQL, aby se zabránilo skenování velkého množství řádků

  3. Převeďte řetězec oddělený čárkami na pole v PL/SQL

  4. Tipy k tabulce Microsoft Access – triky a pokyny, část 2