微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用MySQL全文搜索土耳其字符?

如何解决如何使用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 举报,一经查实,本站将立刻删除。