Sphinx可以处理unicode规范化表单吗?

Sphinx可以处理unicode规范化表单吗?,sphinx,unicode-normalization,Sphinx,Unicode Normalization,我知道charset\U表设置允许U+00E9->e将'ee'映射到'e'。然而,如果你用U+0065U+0301代替U+00E9(这是“e”的“分解”形式,只是“e”后跟一个尖锐的重音),那么斯芬克斯会将U+0301视为空白,并将单词分解 例如: mysql> CALL KEYWORDS('Crème brûlée', 'recipes_rt', 1); +------+-----------+------------+------+------+ | qpos | tokenized

我知道
charset\U表
设置允许
U+00E9->e
将'ee'映射到'e'。然而,如果你用U+0065U+0301代替U+00E9(这是“e”的“分解”形式,只是“e”后跟一个尖锐的重音),那么斯芬克斯会将U+0301视为空白,并将单词分解

例如:

mysql> CALL KEYWORDS('Crème brûlée', 'recipes_rt', 1);
+------+-----------+------------+------+------+
| qpos | tokenized | normalized | docs | hits |
+------+-----------+------------+------+------+
| 1    | creme     | creme      | 3    | 3    |
| 2    | brulee    | brulee     | 2    | 2    |
+------+-----------+------------+------+------+
2 rows in set (0.00 sec)

mysql> CALL KEYWORDS('Crème brûlée', 'recipes_rt', 1);
+------+-----------+------------+------+------+
| qpos | tokenized | normalized | docs | hits |
+------+-----------+------------+------+------+
| 1    | creme     | creme      | 3    | 3    |
| 2    | brule     | brule      | 0    | 0    |
| 3    | e         | e          | 3    | 3    |
+------+-----------+------------+------+------+
3 rows in set (0.15 sec)

这里需要类似NFKC Unicode规范化的东西,但我在文档中看不到任何提及。

不确定如何“可伸缩地”(即所有形式)处理它,但个人可能可以使用
regexp\u过滤器来完成


虽然已经说过,但是只需将U+0301(和其他“字符”)添加到
忽略\U字符


它们消失了,只留下“uncented”字符(e)

,因为我正在做
ee->e
,然后我添加了
ignore\u字符来处理组合字符。然而,我不确定哪个范围是处理所有案例的“完整”范围。我也做了你提到的组合变音符号(
ignore_chars=U+0300..U+036F
),但不确定这是否完整。fwiw这个答案中的
regexp_filter
表达式对我不起作用,我不得不使用:
regexp_filter=\x{0065}\x{0301}=>e
。我想这是因为我使用的是谷歌re2的更新版本?
regexp_filter = \%u0065\%u0301 => e