Re: indizieren von texten mit umlauten via TextIndexNG3?

Andreas Jung <[email protected]>
Newsgroups gmane.comp.web.zope.german
Organization ZOPYX Ltd & Co. KG
Message-ID <[email protected]>
On 23.12.2008 8:50 Uhr, Stefan Palme wrote:
> On Mon, 2008-12-22 at 17:41 +0100, Andreas Jung wrote:
>> On 22.12.2008 17:07 Uhr, Stefan Palme wrote:
>>> On Mon, 2008-12-22 at 16:55 +0100, Andreas Jung wrote:
>>>> On 22.12.2008 16:35 Uhr, Stefan Palme wrote:
>>>>>>> Habe einen eigenen AT-basierten Content-Type, der u.a. ein solches
>>>>>>> Feld enthält:
>>>>>> Für die Verwendung von TXNG3 mit _eigenen_ Content-Typen:
>>>>>> schreib einen Adapter, der IIndexableContent implementiert (siehe
>>>>>> TextIndexNG3/README.txt)
>>>>> :-(
>>>>>
>>>>> Das heißt, das nette Archetypes-Feature, welches Felder, die als
>>>>> "searchable" markiert sind, automatisch als SearchbleText indiziert,
>>>>> funktioniert in Zusammenarbeit mit TextIndexNG3 nicht mehr richtig?
>>>> Dies funktioniert auch mit Plone 3 und TXNG3 out-of-the-box korrekt.
>>>> ...gerade mit einer nackten Plone 3.1.7 Instanz und TXG 3.2.14
>>>> getestet. Umlaute werden korrekt behandelt und keinesfalls als
>>>> Worttrenner behandelt. Ein anderes Verhalten ist mir unbekannt.
>>>> Zur nur nimm den Debugger und trace durch die index_object() Methode in
>>>> index.py durch und finde raus, warum das bei dir nicht tut. Sorry keine
>>>> Ahnung, ein solches Verhalten wäre mir aufgefallen. Du hast den Fehler,
>>>> Du musst es leider weiterverfolgen.
>>> Der "Fehler" ist wohl, dass ich Plone-2.5.3 einsetze.
>>> Laut Webseite läuft TextIndexNG-3.1.x aber mit Plone-2.5.x...
>>>
>> Das sollte es auch kein Problem sein.
>
> Gefunden. In content.py (aus TextIndexNG3-3.1.16) wird in der Methode
> extract_content der zu indizierende Content aus einem Objekt geholt.
> Entweder via IIndexableContent oder - wenn dieses Interface nicht
> implementiert ist - den guten alten Zope-2-way durch Aufruf der
> entsprechenden Getter.
>
> Ca. in Zeile 135 wird dieser Content mit folgendem Code nach Unicode
> konvertiert:
>
>    if isinstance(v, str):
>      encoding = 'iso-8859-15'  # ATT: fix this
>      v = unicode(v, encoding, 'ignore')
>
> Das liefert in meinem Fall falsche Ergebnisse, weil mein Content
> UTF-8-kodiert in den Objekten gespeichert ist.
>
> ...und da steht ja sogar ein "fix this" dran :-)

Was auch gefixt wurde in (TXNG 3.2.X) - dort wird das default Encoding 
aus config.py verwendet. Dies ist jedoch nur der allerletzte Notnagel, 
falls weder kein Adapter gefunden wurde bzw. der Inhalt nicht als 
Unicode vorliegt. TXNG versucht *nicht* ein Encoding zu erraten.
Zumindest in TXNG3.2 müsste die Adaptermimik eigentlich auch für normale 
AT Typen funktionieren, die sich via SearchableText indizieren lassen. 
Für TXNG 3.1...zu alt und zu lange her :-)
Die sauberste Lösung dürfte über einen eigenen Adapter führen. Sollte
aber kein allzu großer Aufwand sein. Schau dir 
adapters/plone_adapters.py an oder: Du patschst die TXNG 3.1 Sourcen und 
änderst das Encoding händisch.

Andreas



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lists.vcf (text/x-vcard, 316 B)
begin:vcard
fn:Andreas Jung
n:Jung;Andreas
org:ZOPYX Ltd. & Co. KG
adr;quoted-printable:;;Charlottenstr. 37/1;T=C3=BCbingen;;72070;Germany
email;internet:[email protected]
title:CEO
tel;work:+49-7071-793376
tel;fax:+49-7071-7936840
tel;home:+49-7071-793257
x-mozilla-html:FALSE
url:www.zopyx.com
version:2.1
end:vcard
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.