我必须破解一个内容管理系统来支持全文搜索包含特殊字符的语言。这些以 html 实体的形式存储在数据库中。开箱即用,CMS 不支持它。该错误是很久以前报告的,但显然它没有优先级。我坚持使用这个 CMS,客户正在等待我的解决方案,所以我必须破解它。该死...
好的... CMS 通过将特殊字符转换为 html 实体来存储其内容(这实际上是由捆绑的编辑器完成的)。所以德语单词“möchten”在数据库中得到“möchten”。CMS 创建一个查询字符串,例如
SELECT * FROM `SiteTree` WHERE MATCH( Content ) AGAINST (<SEARCH_STRING> IN BOOLEAN MODE);
该表的类型为 MyISAM,该字段具有 FULLTEXT 索引。
如果您使用“möchten”作为搜索字符串,MySQL 将匹配每个页面,因为 & 是一个运算符,如果它出现在搜索字符串中,它会做一些疯狂的事情。搜索将不起作用。
下一个想法是用 * 替换特殊字符作为占位符。但这也将匹配几个单词,只要你有任何以“m”开头的单词和另一个以“chten”结尾的单词。我不知道为什么,但只用星号替换与号(因此搜索“m*ouml;chten”)也会导致类似的结果。
这里描述了同样的问题。
好的,伙计们,我需要你们的帮助!有任何想法吗?
编辑:无法将内容转换为 UTF-8。
谢谢!
崩溃