sphinx在作者名称中划线,导致搜索时出现问题

时间:2011-10-10 09:57:42

标签: sphinx

我已经阅读了关于破折号的所有帖子,并尝试了其中提到的几乎所有内容,但无法弄清楚我遇到的一个奇怪的问题。

例如,我有一个像这样的作者名称:

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索引声明的一部分,所以我不认为这是以任何方式提出问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

经过多次斗争后,我发现即使我的数据库都是UTF-8并且具有正确的排序规则,我需要在sphinx.conf中添加它以使一切正常工作:

sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8 

在这样做之后,并且拥有正确的charset_table,一切似乎都运行良好。

希望这有助于其他人。