0
我在Python客戶端中使用Elasticsearch,我對unicode,ES,分析器和emojis之間的交互有一個疑問。當我嘗試通過ES分析器運行包含表情符號字符的unicode文本字符串時,似乎會在結果輸出中使用術語偏移量。Elasticsearch分析器中的Python emojis和詞語補償
例如:
>> es.indices.analyze(body=u'\U0001f64f testing')
{u'tokens': [{u'end_offset': 10,
u'position': 1,
u'start_offset': 3,
u'token': u'testing',
u'type': u'<ALPHANUM>'}]}
這給了我的長期測試錯誤的偏移。
>> u'\U0001f64f testing'[3:10]
u'esting'
如果我和別的Unicode外國字符(例如日元符號)做到這一點,我沒有得到同樣的錯誤。
>> es.indices.analyze(body=u'\u00A5 testing')
{u'tokens': [{u'end_offset': 9,
u'position': 1,
u'start_offset': 2,
u'token': u'testing',
u'type': u'<ALPHANUM>'}]}
>> u'\u00A5 testing'[2:9]
u'testing'
任何人都可以解釋發生了什麼?
在Python 2中,也有窄(你的情況, Windows)和廣泛的CPython在Ubuntu上構建,例如'u'\ U0001f64f'[0] == u'\ U0001f64f''。 – jfs