1

在一个将近十年前的项目中,我们在一个带有 html 实体的 MYSQL 数据库中编码了变音符号。今天所有这些似乎都很奇怪,但尽管如此。使用此数据库的应用程序实现了搜索功能,我的问题是当搜索的字符串包含变音符号时搜索无法正常工作。像:"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&uuml;r '
  IN BOOLEAN MODE
)
ORDER BY kategorie

我的问题是它匹配任何包含的内容,"&uuml;"而不管"f&uuml;r".

这是什么原因?

4

1 回答 1

1

我不是 100% 确定这里会发生什么,但 mySQL 显然在&;控制字符上窒息。(我怀疑它最终只搜索uuml部分)。

无论如何,将术语用引号括起来会有所帮助:

AGAINST (
  '+"f&uuml;r" '
  IN BOOLEAN MODE
)
于 2013-02-06T21:11:34.427 回答