From pylucene-dev-return-3063-archive-asf-public=cust-asf.ponee.io@lucene.apache.org Thu Oct 10 15:14:53 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id EE506180626 for ; Thu, 10 Oct 2019 17:14:52 +0200 (CEST) Received: (qmail 36604 invoked by uid 500); 10 Oct 2019 15:14:52 -0000 Mailing-List: contact pylucene-dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: pylucene-dev@lucene.apache.org Delivered-To: mailing list pylucene-dev@lucene.apache.org Received: (qmail 36593 invoked by uid 99); 10 Oct 2019 15:14:52 -0000 Received: from Unknown (HELO mailrelay1-lw-us.apache.org) (10.10.3.42) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Oct 2019 15:14:52 +0000 Received: from [192.168.0.39] (ovaltofu.org [162.217.73.163]) by mailrelay1-lw-us.apache.org (ASF Mail Server at mailrelay1-lw-us.apache.org) with ESMTPSA id C8A3F5A6D for ; Thu, 10 Oct 2019 15:14:51 +0000 (UTC) From: Andi Vajda Content-Type: multipart/alternative; boundary=Apple-Mail-6B159337-9A83-4346-94EE-FB639B662131 Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (1.0) Date: Thu, 10 Oct 2019 08:14:50 -0700 Subject: Re: Field.setStringValue Message-Id: <6F69C6D9-BE56-42EB-8A46-A2027800C03C@apache.org> References: In-Reply-To: To: pylucene-dev@lucene.apache.org X-Mailer: iPhone Mail (16G102) --Apple-Mail-6B159337-9A83-4346-94EE-FB639B662131 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable It's fixed now in JCC's trunk. Andi.. > On Oct 10, 2019, at 05:18, Marc Jeurissen w= rote: >=20 > Ok thank you Andi. > I=E2=80=99ll use the sidepath with the bytes for the moment. > Hope it will get solved soon though. > =20 > =20 > Met vriendelijke groeten, > Marc Jeurissen >=20 >=20 >=20 > Bibliotheek UAntwerpen > Stadscampus =E2=80=93 Ve35.303 > Venusstraat 35 =E2=80=93 2000 Antwerpen > marc.jeurissen@uantwerpen.be > T +32 3 265 49 71 > =20 >=20 > =20 > From: Andi Vajda > Sent: woensdag 9 oktober 2019 23:33 > To: Andi Vajda > Cc: pylucene-dev@lucene.apache.org > Subject: Re: Field.setStringValue > =20 > =20 > On Wed, 9 Oct 2019, Andi Vajda wrote: > =20 > >=20 > > On Wed, 9 Oct 2019, Marc Jeurissen wrote: > >=20 > >> Good day to you, > >> > >> I have the following issue when setting the value of a field, value > >> containing a character > 160 (Pylucene 8.1.1, Python 3.7.2) > >> > >> ... > >> (Pdb) field > >> >> indexOptions=3DDOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS> > >> (Pdb) value =3D '=C2=ABVolgende facturen werden verstuurd aan de financ= i=C3=ABle > >> dienst.=C2=BB' > >> (Pdb) type(value) > >> > >> (Pdb) field.setStringValue(value) > >> (Pdb) field > >> >> stored,indexed,tokenized,omitNorms,indexOptions=3DDOCS_AND_FREQS_AND_PO= SITIONS_AND_OFFSETS >> facturen werden verstuurd aan de financi=C3=ABle dienst>> > >> > >> The field value has lost 2 characters. > >> > >> But when I encode value: > >> > >> (Pdb) value =3D value.encode('utf-8') > >> (Pdb) value > >> b'\xc2\xabVolgende facturen werden verstuurd aan de financi\xc3\xable > >> dienst.\xc2\xbb' > >> > >> (Pdb) field.setStringValue(value) > >> (Pdb) field > >> >> stored,indexed,tokenized,omitNorms,indexOptions=3DDOCS_AND_FREQS_AND_PO= SITIONS_AND_OFFSETS >> facturen werden verstuurd aan de financi=C3=ABle dienst.=C2=BB>> > >> > >> The field value is correct. > >> > >> So what does field.setStringValue expect: a string (as says the Lucene > >> documentation) or a byte sequence? > >=20 > > Indeed, there is a problem. I was able to reproduce it with just > > StringBuffer, no lucene involved at all: > >=20 > >>>> from lucene import initVM > >>>> initVM() > >>>> b=3Db'\xc2\xabVolgende facturen werden verstuurd aan de > >>>> financi\xc3\xabledienst.\xc2\xbb' > >>>> a=3Db.decode('utf-8') > >>>> from java.lang import StringBuffer > >>>> StringBuffer(b) > > > >>>> StringBuffer(a) > > > >>>> StringBuffer(a).length() > > 59 > >>>> StringBuffer(b).length() > > 61 > >>>> type(a) > > > >>>> type(b) > > > >=20 > > There must be a bug in the Python 'str' -> Java 'String' conversion code= . > > Any Java API such as field.setStringValue() that expects a java.lang.Str= ing() > > can be passed a 'str' or 'bytes', JCC auto-converts as needed. This is v= ery > > likely where the bug is. > =20 > Digging a bit further, it doesn't seem to be a problem when using Python 2= . > I'm not implying this is a python bug, strings are just very different > between python 2 and 3. > =20 > Andi.. > =20 > >=20 > > Andi.. > >=20 > >> > >> Thank you very much. > >> > >> > >> Met vriendelijke groeten, > >> Marc Jeurissen > >> > >> Bibliotheek UAntwerpen > >> Stadscampus ? Ve35.303 > >> Venusstraat 35 ? 2000 Antwerpen > >> marc.jeurissen@uantwerpen.be > >> T +32 3 265 49 71 > >> > >> > >> > >=20 > =20 --Apple-Mail-6B159337-9A83-4346-94EE-FB639B662131 Content-Type: multipart/related; type="text/html"; boundary=Apple-Mail-3A62C70B-19AB-4625-8B12-1FBBC0038ECE Content-Transfer-Encoding: 7bit --Apple-Mail-3A62C70B-19AB-4625-8B12-1FBBC0038ECE Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
It'= s fixed now in JCC's trunk.

Andi..

On Oct 10, 2019, at 05:18, Marc Jeurissen &= lt;marc.jeurissen@uantwerpen= .be> wrote:

<= meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8">

Ok thank you Andi.

I=E2=80=99ll use the sidepath with the bytes for the moment.

Hope it will= get solved soon though.

&n= bsp;

 

Met vriendelijke groeten,
Marc Jeuris= sen

Bibliotheek UAntwerpen
Stadscampus =E2=80=93 Ve35.303Venusstraat 35 =E2=80=93 2000 Antwerpen
marc.jeurissen@uantwerpen.be
T +32 3 265 49 71<= /o:p>

 

=

=

 

From: Andi Vajda
Sent: woensdag 9 o= ktober 2019 23:33
To: Andi Vaj= da
Cc: pyluc= ene-dev@lucene.apache.org
Subject: Re: Field.setStringValue

 

 

On Wed, 9 Oct 2019, Andi Vajda wro= te:

 

&g= t; 

> On Wed, 9 Oct 2019, Marc J= eurissen wrote:

> 

>> Good day to you,

>>

>> I have the following issue when setting the= value of a field, value

>> containing a ch= aracter > 160 (Pylucene 8.1.1, Python 3.7.2)

&g= t;>

>> ...

>= ;> (Pdb) field

>> <Field: stored,index= ed,tokenized,omitNorms

>> indexOptions=3DDO= CS_AND_FREQS_AND_POSITIONS_AND_OFFSETS<text:>>

>> (Pdb) value =3D '=C2=ABVolgende facturen werden verstuurd aan= de financi=C3=ABle

>> dienst.=C2=BB'

>> (Pdb) type(value)

&g= t;> <class 'str'>

>> (Pdb) field.se= tStringValue(value)

>> (Pdb) field

>> <Field:

>> sto= red,indexed,tokenized,omitNorms,indexOptions=3DDOCS_AND_FREQS_AND_POSITIONS_= AND_OFFSETS<text:=C2=ABVolgende

>> factu= ren werden verstuurd aan de financi=C3=ABle dienst>>

>>

>> The field value has lo= st 2 characters.

>>

>> But when I encode value:

>>

=

>> (Pdb) value =3D value.encode('utf-8')

>> (Pdb) value

>> b= '\xc2\xabVolgende facturen werden verstuurd aan de financi\xc3\xable

>> dienst.\xc2\xbb'

>&= gt;

>> (Pdb) field.setStringValue(value)

>> (Pdb) field

>&= gt; <Field:

>> stored,indexed,tokenized,= omitNorms,indexOptions=3DDOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS<text:=C2= =ABVolgende

>> facturen werden verstuurd aa= n de financi=C3=ABle dienst.=C2=BB>>

>>= ;

>> The field value is correct.

>>

>> So what does fi= eld.setStringValue expect: a string (as says the Lucene

>> documentation) or a byte sequence?

> 

> Indeed, there is a pro= blem. I was able to reproduce it with just

> S= tringBuffer, no lucene involved at all:

>&= nbsp;

>>>> from lucene import in= itVM

>>>> initVM()

>>>> b=3Db'\xc2\xabVolgende facturen werden verstuurd aan= de

>>>> financi\xc3\xabledienst.\xc2= \xbb'

>>>> a=3Db.decode('utf-8')

>>>> from java.lang import StringBuffer

=

>>>> StringBuffer(b)

> <StringBuffer: =C2=ABVolgende facturen werden verstuurd aan de= financi=C3=ABledienst.=C2=BB>

>>>>= StringBuffer(a)

> <StringBuffer: =C2=ABVolg= ende facturen werden verstuurd aan de financi=C3=ABledienst>

>>>> StringBuffer(a).length()

> 59

>>>> StringBuffer(b).lengt= h()

> 61

>>>= > type(a)

> <class 'str'>

>>>> type(b)

> <clas= s 'bytes'>

> 

> There must be a bug in the Python 'str' -> Java 'String'= conversion code.

> Any Java API such as field.= setStringValue() that expects a java.lang.String()

> can be passed a 'str' or 'bytes', JCC auto-converts as needed. This i= s very

> likely where the bug is.

 

Digging a bit furthe= r, it doesn't seem to be a problem when using Python 2.

I'm not implying this is a python bug, strings are just very differen= t

between python 2 and 3.

 

Andi..

 

> 

> Andi..

> 

>>

>> Th= ank you very much.

>>

>>

>> Met vriendelijke groeten,<= /p>

>> Marc Jeurissen

= >>

>> Bibliotheek UAntwerpen

>> Stadscampus ? Ve35.303

= >> Venusstraat 35 ? 2000 Antwerpen

>> <= a href=3D"mailto:marc.jeurissen@uantwerpen.be">marc.jeurissen@uantwerpen.be<= /a>

>> T +32 3 265 49 71

>>

>>

>>

> 

 

= --Apple-Mail-3A62C70B-19AB-4625-8B12-1FBBC0038ECE Content-Type: image/png; name="0A9332BE06994330AF4A69C2C3037040[14347943].png"; x-apple-part-url="image001.png@01D3F728.E95A0620" Content-Disposition: inline; filename="0A9332BE06994330AF4A69C2C3037040[14347943].png" Content-Transfer-Encoding: base64 Content-Id: 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 --Apple-Mail-3A62C70B-19AB-4625-8B12-1FBBC0038ECE Content-Type: image/png; name="36B95562C96B4BC797D535441A90471F[14347945].png"; x-apple-part-url="image002.png@01D3F728.E95A0620" Content-Disposition: inline; filename="36B95562C96B4BC797D535441A90471F[14347945].png" Content-Transfer-Encoding: base64 Content-Id: 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 fQAAAABJRU5ErkJggg== --Apple-Mail-3A62C70B-19AB-4625-8B12-1FBBC0038ECE-- --Apple-Mail-6B159337-9A83-4346-94EE-FB639B662131--