Re: indizieren von texten mit umlauten via TextIndexNG3?

Stefan Palme <[email protected]>
Newsgroups gmane.comp.web.zope.german
Organization Invisible Brain
Message-ID <[email protected]>
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 :-)

Habe diese Stelle nun für mich angepasst, und nun läuft es auch wie
erwartet...

Grüße
-stefan-



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
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.