我使用 Google App Engine 搜索编写了一些文本搜索。
在 SDK 中,我在 atom 字段上测试了这样的查询:
u'tag:"wartości"'
在生产中,我运行相同的查询,但它不适用于相同的数据。
如何对 atom 字段进行 unicode 查询?
是否可以在 Google App Engine 搜索中使用 unicode?
我使用 Google App Engine 搜索编写了一些文本搜索。
在 SDK 中,我在 atom 字段上测试了这样的查询:
u'tag:"wartości"'
在生产中,我运行相同的查询,但它不适用于相同的数据。
如何对 atom 字段进行 unicode 查询?
是否可以在 Google App Engine 搜索中使用 unicode?
我们知道这个问题并计划尽快修复。我们目前计划的修复将要求 atom 字段值包含完全相同的重音字符才能匹配。匹配将继续不区分大小写。我们预计,至少在最初,使用组合变音符号的值将被视为与使用预组合字符的值不同的值。我们可能会根据反馈重新审视该决定,但这是我们最直接的解决方法。
有关预组合字符与组合变音符号的更多信息,请参阅此 Wikipedia 文章:
http://en.wikipedia.org/wiki/Precomposed_character
克里斯
看起来我需要将AtomField
值翻译成新的字符串,我也需要翻译查询。此解决方法将只允许波兰语 unicode 搜索。我不知道标记化规则,所以我使用 'q'、'x' 来扩展字母,因为在波兰语中没有使用。
# coding=utf-8
translate = {
u'ą': u'aq',
u'Ą': u'Aq',
u'ć': u'cq',
u'Ć': u'Cq',
u'ę': u'eq',
u'Ę': u'Eq',
u'ł': u'lq',
u'Ł': u'Lq',
u'ń': u'nq',
u'Ń': u'Nq',
u'ó': u'oq',
u'Ó': u'Oq',
u'ś': u'sq',
u'Ś': u'Sq',
u'ż': u'zx',
u'Ż': u'Zx',
u'ź': u'zq',
u'Ź': u'Zq',
}
import re
reTranslate = re.compile(u'(%s)' % u'|'.join(translate))
print reTranslate.pattern
test = u"""\
Właściwie prowadzona komunikacja wewnętrzna w firmie,\
zwłaszcza dużej czy posiadającej rozproszoną sieć oddziałów,\
może przynieść oszczędność czasu, a co za tym idzie, również pieniędzy."""
print reTranslate.sub(lambda match: translate[match.group(0)], test)