在过去差不多十年的项目中,我们在带有html实体的MYSQL数据库中编写了diacitical标记。所有这些看起来都很棒,但是它可能会如此。使用此数据库的应用程序实现了搜索功能,我的问题是,当搜索的字符串包含变音标记时,搜索无法正常工作。例如:"für"
简化的MySQL查询如下所示:
SELECT kunstwerk. * , kategorie.published, kategorie.bezeichnung
FROM kunstwerk
LEFT JOIN kategorie ON SUBSTRING( kategorie, 1, 7 ) = kategorie_Nr
WHERE published = 'true'
AND published_veto <> 'false'
AND MATCH (titel_DE)
AGAINST (
'+für '
IN BOOLEAN MODE
)
ORDER BY kategorie
我的问题是,无论"ü"
中的周围字符是什么,它都会匹配包含"für"
的任何内容。
这是什么原因?
答案 0 :(得分:1)
我不是百分之百确定这里发生了什么,但mySQL显然在&
和;
控制字符上窒息。 (我怀疑它最终只搜索uuml
部分)。
无论如何,用引号括起这个术语会有所帮助:
AGAINST (
'+"für" '
IN BOOLEAN MODE
)