我已经阅读了关于破折号的所有帖子,并尝试了其中提到的几乎所有内容,但无法弄清楚我遇到的一个奇怪的问题。
例如,我有一个像这样的作者名称:
ArturoPérez-Reverte
搜索'pérez-reverte'不会出现任何问题,也不会出现'pérez-reverte',所以逃避破折号不是问题。 但搜索“蜘蛛侠”会返回命中,证明破折号似乎正在起作用。 然而,搜索'perez reverte'也会发现一个命中因为它分别搜索每个单词并在'perez-reverte'中找到'reverte'(但似乎没有找到'perez')。
搜索'pérez'或'perez'会找到相同数量的文档,这表明重音不是问题(我确实有一个charset_table来说明重音字符)。
所以我对这里发生的事情感到非常困惑。如果它不是重音并且它不是破折号,它会是什么?
我没有设置任何ignore_chars,我使用UTF-8并使用charset_table将重音字符视为常规字符。
这两个术语之间的唯一区别是,其中一个是标题(蜘蛛侠),另一个是作者,但它们都是同一个Sphinx索引声明的一部分,所以我不认为这是以任何方式提出问题。
非常感谢任何帮助。
答案 0 :(得分:0)
经过多次斗争后,我发现即使我的数据库都是UTF-8并且具有正确的排序规则,我需要在sphinx.conf中添加它以使一切正常工作:
sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8
在这样做之后,并且拥有正确的charset_table,一切似乎都运行良好。
希望这有助于其他人。