我在搜索包含重音字符的单词时遇到问题。我通过 odbc (freetds) 使用 Sphinx 2.1.1、Linux、MsSQL 2005。
这是我的 sphinx.conf:
source parentSource
{
type = odbc
...
}
index parentIndex
{
morphology = stem_en
charset_type = utf-8
charset_table = 0..9, a..z, A..Z->a..z, ... (mapping taken from
http://sphinxsearch.com/wiki/doku.php?id=charset_tables for common, A-Z)
...
}
更改配置后,我重新索引了所有索引并重新启动了 searchd。当我搜索“Muller”时 - 我得到的结果只包含“Muller”。当我搜索“Müller”时 - 我也只得到“Muller”结果。但是 db 中也有“Müller”记录,没有正确索引。配置中存在 ü (U+00FC->u) 的映射。我的意思是在我将重音字符添加到 charset_table 之后,它(重音字符)在我搜索时被转换,但在内容被索引时不会被转换,据我所知。
当我使用 --buildstops 选项运行索引器时,我在输出文件中找到了下一条记录:“mller”。是的,当我搜索“mller”时 - 我得到“Müller”结果(但当然没有“Muller”)。
我需要做什么才能通过“Muller/Müller”搜索同时给出“Muller”和“Müller”的结果?
PS:用于列(和 wohle 数据库)的排序规则是 SQL_LATIN1_GENERAL_CP1_CI_AS。我将列类型从 varchar 更改为 nvarchar,但这没有帮助。“Müller”记录在站点上正确显示(没有???)以及当我使用--dump-rows 运行索引器时。