如何解决如何使用MySQL全文搜索土耳其字符?
我在MysqL上存储了一个很小的数据集,我想避免使用/管理ElasticSearch / Sphinx等实例,保持索引的更新等,并使用MysqL全文索引进行搜索。
但是我的特殊要求是进行模糊搜索,当关键字为“ Turkce”时可以找到“Türkçe”,反之亦然。
我对术语不熟悉,因此无法在功能之间做出决定。我该如何使用MysqL?我应该使用Soundex还是其他任何功能?
非常感谢您。
解决方法
pre><html>
<head>
<title>change picture</title>
<script type = "text/javascript">
function displayNextImage() {
x = (x === images.length - 1) ? 0 : x + 1;
document.getElementById("img").src = images[x];
}
function startTimer() {
setInterval(displayNextImage,4000);
}
var trans=[
];
var images = [
"https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/10.png","https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/11.png","https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/12.png","https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/13.png","https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/14.png"
],x = -1;
</script>
</head>
<body onload = "startTimer()">
<img id="img" src="https://cosecha-verde.000webhostapp.com/images/Centro/2016-2017/1.png" data-transition="slideInLeft" />
</body>
</html>
,
您有两种选择。
最简单的方法(如果对您而言正确)是将FULLTEXT索引中涉及的列的MySql排序规则设置为utf8mb4_unicode_ci
(或utf8_unicode_ci
)。如果您的列已使用unicode编码,则这样做不会丢失数据。不区分大小写的_ci
编码将带有diares的许多字符视为未经修饰的对应字符。但是此排序规则最适合像瑞典语(MySql开发人员所在的国家)之类的西欧语言。试试看。请让我们知道它对土耳其语的效果如何。
如果它不起作用,请尝试为要搜索的每一列存储两列。一个应包含实际值,另一个应包含 search slug 值。您可以使用自己创建的存储函数根据实际值计算搜索段标值。然后,在搜索条列上创建FULLTEXT索引。
无论何时搜索,都将用户提供的搜索词转换为等效的搜索词条,然后进行搜索。
“搜索记录”存储功能会将带有怀念症的字符(如ç
)转换为未经修饰的等价物(如c
)。这里是有关创建该存储函数的一些想法。 How to remove accents in MySQL?
SOUNDEX对于您的目的完全一文不值。它是数十年前发明的,当时计算机具有数千个存储位置,其特定目的是查找北美专有名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。