在我的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_table条目来自此处:http://speeple.com/unicode-maps.txt)
预期结果是查询kyles
将返回与kyles
和/或kyle's
匹配的所有记录,因为我告诉sphinx排除'(单引号/) index(ab'cd - > abcd)。但是,在实践中,这种情况并没有发生。
答案 0 :(得分:0)
我相信将它添加到ignore_chars与预期效果相反。这告诉狮身人面像不要分裂那个角色,而是会折叠要被忽略的角色周围的单词。因此,kyle's
将成为kyles
而不是kyle
和s
。
我刚刚尝试解决此问题的解决方案似乎是将s
添加到我的停用词列表中(可能还需要's
,也不记得了)。狮身人面像似乎将kyle's
分为单词kyle
和's
。由于匹配所有模式已启用,因此某些文档在's
的匹配项上失败。将它添加到停用词似乎具有所需的效果。
看起来正常的干预应该照顾这个,所以也许我们都做错了...