Ruby 忽略斯芬克斯索引中的撇号

Ruby 忽略斯芬克斯索引中的撇号,ruby,configuration,sphinx,thinking-sphinx,stop-words,Ruby,Configuration,Sphinx,Thinking Sphinx,Stop Words,在我的sphinx配置文件中,我有以下内容: ignore_chars: "U+0027" charset_table: "0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e,

在我的sphinx配置文件中,我有以下内容:

ignore_chars: "U+0027"
charset_table: "0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a,
  U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e,
  U+00C9->e, U+00CA->e, U+00CB->e, U+00CC->i, U+00CD->i, U+00CE->i [SNIP]"
(charset_表条目来自此处:)


预期结果是,查询
kyles
将返回所有匹配
kyles
和/或
kyle的
的记录,因为我告诉sphinx从索引中排除“(单引号/apos)(ab'cd->abcd)。然而,在实践中,这种情况并没有发生。

我认为将其添加到ignore_chars中会产生与预期相反的效果。这是告诉斯芬克斯不要在该角色上拆分,而是将要忽略的角色周围的单词折叠起来。因此,
kyle的
将变成
kyles
,而不是
kyle
s

对于这个问题,我刚刚尝试的解决方案似乎是将
s
添加到我的停止词列表中(可能还需要
,我不记得了)。斯芬克斯似乎把凯尔的分成了
凯尔
两个词。由于“全部匹配”模式处于启用状态,因此某些文档在与
匹配时失败。将其添加到停止词中似乎具有预期效果


但是,似乎正常的词干分析应该解决这个问题,所以也许我们都做错了…

ignore\u chars确实会将“kyle’s”转换为“kyles”,这正是kyle想要的,因为(理论上)搜索“kyles”会匹配那些包含“kyle’s”并被转换为“kyles”的文档。