Khi bạn xác định CHARACTER SETS
riêng lẻ đối với các cột của mình, bạn ghi đè đối chiếu mà bạn đặt mặc định ở cấp bảng.
Mỗi cột của bạn có latin1
mặc định đối chiếu (là latin1_swedish_ci
). Bạn có thể thấy nó bằng cách chạy SHOW CREATE TABLE
.
Trong FULLTEXT
các truy vấn, các cột được lập chỉ mục có COERCIBILITY
trong tổng số 0
, đó là tất cả các truy vấn đầy đủ văn bản được chuyển đổi thành đối chiếu được sử dụng trong chỉ mục, không phải ngược lại.
Bạn cần xóa CHARACTER SETS
định nghĩa từ các cột của bạn hoặc đặt tất cả các cột thành latin1_german_ci
một cách rõ ràng :
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;