1

Python クライアントで Elasticsearch を使用していますが、Unicode、ES、アナライザー、および絵文字の間の相互作用について質問があります。絵文字を含む Unicode テキスト文字列を ES アナライザーで実行しようとすると、結果の出力で用語オフセットが台無しになっているようです。

例えば:

>> 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'

誰が何が起こっているのか説明できますか?

4

2 に答える 2