1

在我的 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 从索引 (ab'cd -> abcd) 中排除 ' (单引号/apos)。然而,在实践中,这并没有发生。

4

1 回答 1

0

我相信将它添加到 ignore_chars 与预期的效果相反。这是告诉 sphinx 不要在该字符上拆分,而是会折叠要忽略的字符周围的单词。所以,kyle's将变成kyles代替kyleand s

我刚刚尝试解决的这个问题似乎有效的解决方案是添加s到我的停用词列表中(可能's还需要在那里,不记得了)。狮身人面像似乎分裂kyle's成单词kyle's。因为全匹配模式已打开,所以某些文档在匹配 时失败's。将其添加到停用词中似乎具有预期的效果。

然而,似乎正常的词干处理应该解决这个问题,所以也许我们都做错了什么......

于 2011-04-06T21:36:47.523 回答