DE69400207T2 - Sprachabhängiges textvergleichssystem - Google Patents

Sprachabhängiges textvergleichssystem

Info

Publication number
DE69400207T2
DE69400207T2 DE69400207T DE69400207T DE69400207T2 DE 69400207 T2 DE69400207 T2 DE 69400207T2 DE 69400207 T DE69400207 T DE 69400207T DE 69400207 T DE69400207 T DE 69400207T DE 69400207 T2 DE69400207 T2 DE 69400207T2
Authority
DE
Germany
Prior art keywords
character
characters
comparison
values
tertiary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69400207T
Other languages
English (en)
Other versions
DE69400207D1 (de
Inventor
Mark Davis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Object Technology Licensing Corp
Original Assignee
Taligent Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Taligent Inc filed Critical Taligent Inc
Application granted granted Critical
Publication of DE69400207D1 publication Critical patent/DE69400207D1/de
Publication of DE69400207T2 publication Critical patent/DE69400207T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/02Indexing scheme relating to groups G06F7/02 - G06F7/026
    • G06F2207/025String search, i.e. pattern matching, e.g. find identical word or best match in a string
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/917Text
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Linguistics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Machine Translation (AREA)
  • Character Discrimination (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Diese Patentanmeldung enthält urheberrechtlich geschütztes Material, dessen Reproduktion nur als Teil der Patentanmel dung zu informativen Zwecken gestattet ist. Alle anderen Rechte, insbesondere das Recht zur kommerziellen Verwertung derartigen Materials, sind vorbehalten.
  • Bereich der Erfindung
  • Diese Erfindung betrifft im allgemeinen Verbesserungen in Computersystemen und insbesondere beim sprachsensitiven Textvergleich.
  • Hintergrund der Erfindung
  • Für Entwickler von Workstation-Software wird es zunehmend wichtiger, eine flexible Software-Umgebung zu schaffen und gleichzeitig eine Konsistenz in der Anwenderschnittstelle zu gewährleisten. Ein früher Versuch, diese Art Betriebsumgebung zu schaffen&sub1; ist im US-Patent 4.686.522 für Hernandez et al. offenbart. Dieses Patent bespricht ein kombiniertes grafik- und textverarbeitendes System, in welchem ein Anwender an der Stelle des Cursors ein dynamisches Menü aufrufen und eine Vielzahl von Funktionen aus dem Menü aufrufen kann. Diese Art der natürlichen Interaktion mit einem Anwender verbessert die Benutzerschnittstelle und macht diese Anwendung wesentlich intuitiver.
  • EP A 0 294 950 offenbart ein Verfahren zur alphabetischen Sortierung von Wörtern, basierend auf Zeichen aus einem mehrsprachigen Alphabet. Dieses Verfahren verwendet ein Codierschema, um die sprachenabhängigen Sortierordnungen der Zeichen zu bestimmen. Zu diesem Zweck werden die sprachenabhängigen Sortierordnungen als Datendateien für jede der unterstützten Sprachen gespeichert. Jede Datendatei besteht aus einer Tabelle mit Ordnungswerten für die im Alphabet der jeweiligen Sprache enthaltenen Zeichen, und aus weiteren Tabellen zur Akzentcodierung und zur Codierung von nichtalphanumerischen Zeichen. Die Zeichen der zu sortierenden Daten dienen als Zeiger zu den Datendateien, um einen alphanumerischen Sortierschlüssel zu definieren, der dann für den Sortiervorgang verwendet wird.
  • EP A 0310 283 offenbart ein mehrsprachiges Datenbanksystem, welches die Sortiereinrichtung gemäß EP A 0 294 950 verwendet, um mehrsprachige Sortiervorgänge durch Erhaltung einer Datenbank durchzuführen, die aus allen mehrsprachigen Wörtern besteht, die in der Umgebung anzutreffen sind. Auf die Datenbank wird während eines Sortier- oder Vergleichsvorganges durch einen Sortierschlüsselindex zugegriffen, in welchem sich mindestens ein Sortierschlüssel für jedes Datensegment für jede unterstützte Sprache befindet. Jeder mit einer besonderen Sprache im Zusammenhang stehende Sortierschlüsselsatz wird in Übereinstimmung mit einem vorherbestimmten Sprachenkritenum geordnet, so daß durch den Zugriff auf die Datenbank unter Verwendung des Sortierschlüsselsatzes Wörter in der richtigen Vergleichsordnung für diese Sprache aufgefunden werden. Das Verfahren für den Zugriff auf die Datenbank verwendet Wörter basierend auf Zeichen eines mehrsprachigen Alphabets, welche anfänglich in der Datenbank gespeichert werden. Die Wörter werden danach codiert, um einen Sortierschlüssel für jedes einzelne Wort jeder einzelnen von der Datenbank zu unterstützenden Sprache zu bilden. Die Sortierschlüssel werden dann in sortierter Reihenfolge gemeinsam mit einem Hinweis auf die entsprechende gespeicherte Information im Datenspeicher in einnem Index gespeichert. Somit ist es möglich, eine alphabetische Sortierung durchzuführen, indem einfach auf den Datenspeicher in der Reihenfolge zugegriffen wird, die durch einen Sortierschlüssel für eine bestimmte Sprache vorgegeben wird. Auf ähnliche Weise kann ein mehrsprachiger Vergleich durchgeführt werden&sub1; indem auf den Datenspeicher zugegriffen wird, um zwei unterschiedliche Wörter mit Hilfe eines Sortierschlüssels für zwei unterschiedliche Sprachen wiederaufzufinden.
  • Wichtig in diesem System ist, daß alle Wörter, die in der Umgebung gefunden werden, in der Datenbank gespeichert sein müssen. Eine getrennte Datendatei wird für jede einzelne zu unterstützende Sprache geschaffen, und die Datendatei wird verwendet, um die Hauptdatei auf eine vorherbestimmte Art und Weise zu modifizieren. Insbesondere wandelt die Modifizierung jedes einzelne gespeicherte Wort von seiner natürlichen Darstellung in eine Form um, die unabhängig von der internen Interpretation des normalsprachigen Zeichensatzes ist. Nachdem jedes dieser Wörter auf diese vorherbestimmte Art und Weise codiert wurde, kann eine 5ortierung oder ein Vergleich durchgeführt werden, wobei die gespeicherten codierten Werte (die sprachenunabhängig sind) anstelle der uncodierten gespeicherten Wörter (die sprachenabhängig sind) verwendet werden.
  • Die bekannten Systeme unterscheiden sich wesentlich von der vorliegenden Erfindung, der zufolge der Vergleich von Textketten Zeichen für Zeichen erfolgt, bis ein unterschied festgestellt wird. Der erfinderische Vorgang beginnt, indem ein Ordnungswert für jedes einzelne Zeichen in einer gegebenen Sprache definiert und der Satz der Ordnungswerte gespeichert wird. Dann werden zwei Textketten miteinander verglicheni indem die Ketten gespeichert werden und der Reihe nach ein Zeichenpaar aus jeweils einer Kette wiederaufgefunden wird. Die Zeichen werden für den Zugang der vordef inierten Datenbank und zum Wiederauff inden der Ordnungswerte für die einzelnen Zeichen verwendet. Die Ordnungswerte werden dann miteinander verglichen, und wenn ein Unterschied gefunden wird, wird dieser Unterschied verwendet, um die Vergleichsordnung der Ketten zu bestimmen.
  • Zusammenfassung der Erfindung
  • Demzufolge ist es ein primäres Ziel der vorliegenden Erfindung, einen sprachsensitiven Textvergleich zu schaffen. Es wird ein erfinderisches System und ein erfinderisches Verfahren zur Durchführung des Vergleichs vorgestellt, welches den Textvergleich beliebiger Unicode-Ketten durchführt. Für jede Sprache wird eine Ordnung basierend auf Merkmalen der Sprache erstellt. Danach wird eine Vergleichsfunktion durchgeführt, um die Beziehung eines Kettenpaares zu bestimmen. Die Kette wird überprüft, und ein Vergleich von einem oder mehreren Zeichen wird basierend auf einer vorherbestimmten Zeichenpriorität gleichzeitig durchgeführt, um zu bestimmen, ob eine Übereinstimmung gefunden wurde.
  • Die Erfindung wird gemäß Patentanspruch 1 (System) und Patentanspruch 8 (Verfahren) definiert.
  • Kurze Beschreibung der Zeichnungen
  • Figur 1 ist ein Blockdiagramm eines Personal-Computersystems gemäß dem Erfindungsgegenstand;
  • Figur 2 zeigt die logische Zusammensetzung der Unicode- Ordnung gemäß dem Erfindungsgegenstand;
  • Figur 3 zeigt eine Unicode-Ordnung für Englisch gemäß dem Erfindungsgegenstand;
  • Figur 4 zeigt ein Beispiel für Unicode-Strukturen gemäß dem Erfindungsgegenstand;
  • Figur 5 stellt eine Datenstruktur für den Kettenvergleich gemäß dem Erfindungsgegenstand dar;
  • Figur 6 zeigt den Fluß der Kontrolle und des Gruppierens gemäß dem Erfindungsgegenstand;
  • Figur 7 zeigt eine Unicode-Ordnung basierend auf der letzten Unicode-Ordnung gemäß dem Erfindungsgegenstand;
  • Figur 8 ist ein Flußdiagramm der detaillierten Logik gemäß dem Erfindungsgegenstand; und
  • Figur 9 ist ein Beispiel einer Anzeige gemäß dem Erfindungsgegenstand.
  • Genaue Beschreibung der Erfindung
  • Die Erfindung wird bevorzugterweise im Zusammenhang mit einem Betriebssystem ausgeführt, welches sich auf einem Personal Computer wie zum Beispiel einem IBM PS/2 oder einem Apple Macintosh Computer befindet. Eine repräsentative Hardware-Umgebung wird in Figur 1 dargestellt, welche eine typische Hardware-Konfiguration einer Workstation gemäß dem Erfindungsgegenstand darstellt, die aus einer zentralen Recheneinheit (CPU) 10, wie zum Beispiel einem herkömmlichen Mikroprozessor, und einer Anzahl anderer Einheiten besteht, die über einen Systembus 12 miteinander verbunden sind. Die in Figur 1 dargestellte Workstation umfaßt einen Direktzugriffsspeicher (RAM) 14, einen Nur-Lese-Speicher (ROM) 16, einen E/A-Adapter 18 zum Anschluß von Peripheriegeräten, wie zum Beispiel Disketteneinheiten 20, am Bus, einen Benutzerschnittstellenadapter 22 zum Anschluß einer Tastatur 24, einer Maus 26, eines Lautsprechers 28, eines Mikrophons 32 und/oder anderer Benutzerschnittstellengeräte, wie zum Beispiel eines Tast-Bildschirms (nicht dargestellt) am Bus, einen Kommunikationsadapter 34 zum Anschluß der Workstation an einem datenverarbeitenden Netzwerk und einen Anzeigenadapter 36 für den Anschluß eines Anzeigegerätes 38 am Bus. Die Workstation umfaßt weiters ein Betriebssystems, wie zum Beispiel das Betriebssystem Apple System/7 .
  • Keine Zeichencodierung enthält ausreichend Informationen für eine gute alphabetische Ordnung irgendeiner natürlichen Sprache: beim Macintosh führt der einfache byte-weise Vergleich zur folgenden falschen Ausgabe:
  • "A" < "Z" < "a" < "Ñ" < "&empty;" < " ".
  • Textvergleichsklassen umfassen Vorkehrungen für den richtigen Vergleich vieler verschiedener natürlicher Sprachen, und für richtiges natursprachliches Suchen für diese Sprachen.
  • Natursprachliche Vergleichsmerkmale
  • Richtiger Vergleich und korrektes Sortieren natursprachlicher Texte erfordert die folgenden Fähigkeiten. Diese Fähigkeiten sind von überaus großer Wichtigkeit für Programmierer, welche Vergleichsobjekte erstellen: auch ein Satz vordef inierter Vergleichsobjekte für unterschiedliche Sprachen wird verfügbar sein.
  • A. Ordnungsprioritäten
  • Der erste primäre Unterschied in einer Kette bestimmt die darausfolgende Ordnung, unabhängig davon, um welche Zeichen es sich bei den anderen Zeichen handelt.
  • Beispiel:
  • cat < dog
  • Wenn es keine primären Unterschiede in der Kette gibt, bestimmt der erste sekundäre Unterschied die darausfolgende Ordnung.
  • Beispiel:
  • ax < Ax < x < axx
  • Beispiel:
  • china < China < chinas
  • Einige Sprachen erfordern primäre, sekundäre und tertiäre Ordnungen. Im Tschechischen zum Beispiel stellen Unterschiede in der Groß-/Kleinschreibung tertiäre Unterschiede dar (A vs. a), Akzentunterschiede sind sekundäre Unterschiede (é vs. e) , und unterschiedliche Grundbuchstaben stellen einen primären Unterschied dar (A vs. B) . Wenn es in diesen Sprachen keinen primären und sekundären Unterschied gibt, bestimmt der tertiäre Unterschied in den Ketten die darausfolgende Ordnung.
  • Beispiel:
  • ax Ax
  • Beispiel:
  • äx Ax
  • B. Gruppierende Zeichen
  • Bei einigen Sprachen wird beim Vergleich eine Zeichenfolge so behandelt, als würde es sich dabei um einen einzelnen Buchstaben des Alphabets handeln.
  • Beispiel:
  • cx < chx < dx
  • C. Erweiternde Zeichen
  • In einigen Sprachen wird ein einzelnes Zeichen so behandelt, als ob es sich dabei um eine Buchstabenfolge des Alphabets handeln würde.
  • Beispiel:
  • aex < æx < aexx
  • D. Ignorierte Zeichen
  • Bestimmte Zeichen werden beim Vergleich ignoriert. Das heißt, sie sind bedeutungslos, sofern es keine anderen Unterschiede in der restlichen Kette gibt.
  • Beispiel:
  • ax < a-x y a-xx
  • Beispiel:
  • blackbird < black-bird < blackbirds
  • Die spezifischen Zeichen, die dieses Verhalten aufweisen, hängen von der spezifischen Sprache ab: "a" < "ä" ist eine schwache Ordnung im Deutschen, aber nicht im Schwedischen: "ch" ist ein zusammengehöriges Zeichen im Spanischen, aber nicht im Englischen, usw. Ordnungen können jedoch auch innerhalb einer Sprache unterschiedlich sein: Anwender könnten sich zum Beispiel eine modifizierte Ordnung für die andere Norm wünschen, derzufolge "ä" wie ein erweiterndes Zeichen behandelt wird.
  • KLASSENBESCHREIBUNG
  • Die folgenden Klassen stehen für Textvergleich und Suche zur Verfügung:
  • * TTextOrder
  • * TTableBasedTextOrder
  • TTextorder
  • TTextOrder ist eine Klasse auf abstrakter Basis, welche das Protokoll zum Vergleich zweier Textobjekte festlegt. Dessen Unterklassen schaffen einen primitiven Mechanismus, der für das Sortieren oder Suchen von Textobjekten hilfreich ist. Eine TTextOrder ist ein notwendiges Feld am Ort des Anwenders.
  • Vergleichsergehnis:
  • Der Vergleich zweier Textobjekte kann zu folgenden Ergebnissen führen: kSourcePrimaryLess (kQuelleprimärkleiner), kSourcesecondaryless (kQuellesekundär- Kleiner), kSourceTertiaryLess (kQuelleTertiärKleiner), kSourceTertiaryGreater (kQuelleTertiärGrößer), kSourceSecondaryGreater (kQuelleSekundärGrößer) oder kSourcePrimary- Greater (kQuellePrimärGrößer). Zwei Objekte sind nur dann gleich, wenn die Ketten Bit für Bit gleich sind, oder wenn es äquivalente Unicode-Reihen für einen bestimmten Buchstaben gibt. So kann das "ü" zum Beispiel durch das Zeichen "ü" oder durch die Reihe "u" + " " ausgedrückt werden.
  • Die tertiären Vergleichsergebnisse ("kSourceTertiaryLess" oder "kSourceTertiaryGreater") werden zurückgegeben, wenn es keine primären oder sekundären Unterschiede in den Ketten gibt, aber wenn es tertiäre Unterschiede in den Ketten gibt (d.h. Unterschiede in der Groß-/Kleinschreibung, wie z.B. in 'a' versus 'A') . Die sekundären Vergleichsergebnisse ("kSourceSecondaryLess" und "kSourceSecondaryGreater") werden zurückgegeben, wenn es einen sekundären Unterschied gibt (d.h. einen Akzentunterschied wie z.B. in vs. ä).
  • Die primären Vergleichsergebnisse ("kSourcePrimaryLess" und "kSourcePrimaryGreater") werden zurückgegeben, wenn es einen primären Unterschied in der Kette gibt (d.h. Zeichenunterschiede wie z.B. in a vs. b) . Dies schließt auch den Fall ein, wo es bis zum Ende einer der Ketten keine primären Unterschiede gibt, wo aber die andere Kette zusätzliche, nicht ignorierbare Zeichen enthält.
  • Zeichenordnung:
  • Die folgenden Konstanten werden verwendet, um die Ordnungsstärke eines Zeichens zu markieren: kPrimaryDifference (kPrimärUnterschied), kSecondaryDifference (kSekundärUnterschied), kTertiaryDifference (kTertiärUnterschied), und kNoDifference (kKeinUnterschied). Primärunterschied bedeutet, daß ein Zeichen um vieles größer ist als ein anderes (d.h.... 'b' und 'a'); Sekundärunterschied bedeutet, daß das Zeichen "wenig größer" ist (wie z.B. ein Akzentunterschied in 'A' und ' '); Tertiärunterschied bedeutet, daß das Zeichen "sehr wenig größer" ist (wie zum Beispiel aufgrund der Groß-/Kleinschreibung in 'A' und 'a'). Zwei Zeichen werden als "nicht unterschiedlich" angesehen, wenn sie eine äquivalente Unicode-Codierung aufweisen. Der Aufrufer kann entscheiden, einen sekundären, tertiären und ignorierbaren Unterschied durch Aufruf von Se tOnlyUsePrimaryDifference () (EinstellenNurPrimärUnter schiedVerwenden) zu ignorieren. Man würde diese Markierung zum Beispiel auf FALSE (FALSCH) stellen, wenn ein groß/kleinschreibsensitiver Vergleich im Englischen durchgeführt wird. Und der Aufrufer kann einen tertiären Unterschied durch einfaches Aufrufen ignorieren.
  • 2. TTabelBasedTextOrder (Tabellenbasierte Textordnung)
  • TTableBasedTextOrder leitet sich von TTextOrder ab. Dabei wird ein tabellenorientiertes Verfahren für sprachsensitiven Textvergleich verwendet. Die Tabelle besteht aus einer Liste von TTextOrderValue-Objekten, die durch Unicode- Zeichen indiziert sind. Ein TTextOrderValue (Textordnungswert) umfaßt die vier natursprachlichen Vergleichsmerkmale, die oben beschrieben wurden. Er enthält einen Ordnungswert für das Zeichen und, nach Wahl, Expansions- und Kontraktionsinformationen.
  • Konstruieren der Tabelle:
  • Momentan wird die Tabelle auf der Basis einer Textspezifikation konstruiert. In der Zukunft wird es ein TUserInterface-Objekt (Benutzerschnittstellenobjekt) geben, welches für die Darstellung und die Bearbeitung der Tabellendaten verantwortlich ist. Eine Reihe von Zeichen in aufsteigender Ordnung kann programmatisch der Tabelle hinzugefügt werden, indem nacheinander der AddComparisonVvalue () (Vergleich-hinzufügen-Wert) aufgerufen wird. Öffentliche Verfahren
  • Wörterbuch-basierter Vergleich
  • Ein TTableBasedTextOrder-Objekt enthält nicht die Fähigkeit für einen wörterbuchbasierten Vergleich, welche dann erforderlich sein kann, wenn die Vergleichsordnung nicht von den Zeichen im Text abgeleitet werden kann. Die Abkürzung St. zum Beispiel ist zweideutig, und kann entweder als Saint, St. oder Street geordnet werden. Dieses Verhalten kann durch Einrichten von Unterklassen geschaffen werden: für Pink 1.0 ist kein wörterbuchbasierter Vergleich geplant. BEISPIELE GEMÄSS EINER BEVORZUGTEN AUSFÜHRUNGSFORM DER VORLIEGENDEN ERFINDUNG 1. Vergleich zweier Textobjekte:
  • WESENTLICHE EIGENSCHAFTEN DES TEXTVERGLEICHS
  • Dieser Abschnitt beschreibt die wesentlichen Eigenschaften des Vorgangs, der für einen sprachsensitiven Textvergleich verwendet wird. Der Taligent-Vergleichsvorgang ermöglicht den Vergleich beliebiger Unicode -Ketten. Unicode ist eine Schutzmarke der Fa. Unicode, Inc. Nähere Informationen bezüglich Unicode sind zu finden in: The Unicode Standard: Worldwide Character Encoding, (Die Unicode-Norm: Zeichencodierung weltweit), Version 2.0, Bände 1, 2, von Unicode, Inc., erschienen im Addison-Wesley-Verlag, ISBN 0-201- 56788-1, ISBN 0-201-60845-6. Er kann aber auch für eingeschränktere Zeichensätze angepaßt werden. Die untenstehenden Informationen beschreiben den logischen Vergleichsvorgang.
  • Das Macintosh -Vergleichssystem stellt im wesentlichen eine primäre und sekundäre Ordnung auf eine ähnliche Weise zur Verfügung. Dieses Vergleichssystem liefert jedoch weder die zusätzlichen Zeichen, noch schafft es einen modularen, tabellenbasierten Mechanismus für den Zugang zu diesen Informationen. Der La Bonté-Vorgang (siehe "Quand « Z » vient-il avant «a» ? algorithme de tri respectant langues et cultures". Alain La Bonté, Gouvernement du Quebec, Bibliothèque nationale du Quebec, ISBN 2-550-21180) enthält viele Merkmale dieser Ordnung (wie zum Beispiel französische Akzente), aber er erfordert die Umwandlung der gesamten Kette, bietet keinen tabellenbasierten Mechanismus, der auch bei der Suche verwendet werden kann, und bietet auch keine Informationen, um bestimmen zu können, wo in zwei Ketten eine Überprüfung auf eine schwache Identität erfolglos ist. Keiner der beiden Vorgänge schafft unkomplizierte Verfahren zur Konstruktion, und keiner der beiden Vorgänge schafft Verfahren zum Zusammenmischen.
  • Ordnungen
  • Eine TUnicodeOrdering (Unicode-Ordnung) enthält jene UnicodeOrder- (UO) Information, die einem Zeichen in der Kette entspricht. Diese Information besteht aus den in Figur 2 dargestellten Feldern (d.h. die logische Zusammensetzung der UnicodeOrder - abhängig vom Gerät können die Felder in eine kleine Menge an Information verpackt werden)
  • TUnicodeOrdering (Unicode-Ordnung)
  • Das primäre Feld 210 zeigt die grundlegende, stärkste Sortierordnung des Zeichens an. Die sekundäre Ordnung 220 wird nur dann verwendet, wenn die primären Ordnungen der Zeichen in einer Kette dieselben sind. Bei vielen europäischen Sprachen, wie zum Beispiel Franzosisch, entspricht dies dem Unterschied zwischen Akzenten. Die tertiäre Ordnung 230 wird nur dann verwendet, wenn die primäre und die sekundäre Ordnung gleich sind. Bei den meisten europäischen Sprachen entspricht dies einem Unterschied in der Groß/Kleinschreibung. Figur 3 stellt zum Beispiel UnicodeOrders für Englisch dar.
  • Wenn es zwischen zwei Ketten x und y einen primären Unterschied basierend auf dem Textvergleich gibt, und der erste primäre Unterschied in x geringer ist als y, sagen wir, daß x primär größer ist als y, und schreiben dies so: x «< y; auf ähnliche Weise kann x sekundär größer sein als y (x « y), oder tertiär größer als y (x < y), oder gleich wie y (x = y). Wenn es keine primären, sekundären oder tertiären Unterschiede zwischen den Ketten gibt, dann sind sie gemäß dem Textvergleich gleich (x=y).
  • Vernachlässigbare Zeichen
  • Es gibt Fälle, wo Zeichen bezüglich der primären Unterschiede vernachlässigt werden sollten. So ist zum Beispiel in englischen Wörtern ein Trennstrich vernachlässigbar: blackbird « black-bird « blackbirds « blackbirds. Dies wird unterschieden, indem der vernachlässigbare Wert (=2) als der primäre Wert verwendet wird. Eine vernachlässigbare UnicodeOrder zählt als sekundärer Unterschied, wenn der sekundäre gleich nicht-Null ist; andernfalls als ein tertiärer Unterschied, wenn der tertiäre Wert gleich nicht-Null ist; andernfalls ist die UnicodeOrder vollständig vernachlässigbar (der Vergleich wird fortgesetzt, als wäre die UnicodeOrder nicht vorhanden)
  • Nicht verzeichnete Zeichen
  • Für Unicode gibt es 65534 mögliche primäre UnicodeOrders. Sehr oft jedoch kommt es vor, daß ein Vergleich nicht für alle möglichen Unicodes Werte enthält. So könnte zum Beispiel ein französischer Vergleich keine Werte zum Sortieren von hebräischen Zeichen enthalten. Jedes Zeichen x außerhalb des Vergleichsbereiches wird als 65536 + Unicode(x) verzeichnet. Die primären Werte für Zeichen, welche vom Vergleich abgedeckt werden, können entweder dem niedrigen Bereich (2...65.535) oder dem hohen Bereich (131.072 ... 196.607) zugeordnet werden. Dadurch kann ein Vergleich alle nicht verzeichneten Zeichen als vor den verzeichneten Zeichen oder als danach oder als an irgendeinem Punkt in der Mitte stehend behandeln. Um zum Beispiel alle nicht verzeichneten Zeichen zwischen a und b: zu stellen, würde eine Unicode-Struktur verwendet, wie sie in Figur 4 dargestellt ist.
  • Orientierung
  • Im Französischen funktioniert die Akzentordnung auf besondere Art und Weise. Akzente sind nur dann von Bedeutung, wenn die primären Zeichen identisch sind, so daß sie einen sekundären Unterschied aufweisen. Im Gegensatz zu einem Unterschied in einem primären Zeichen oder in der Groß/Kleinschreibung ist es jedoch der letzte Akzentunterschied, der die Ordnung der zwei Ketten bestimmt. Die folgenden Ketten sind zum Beispiel im Französischen richtig geordnet (achten Sie auf das zweite Zeichen in jeder Kette: der Unterschied zwischen ê und é wird in der ersten Kette nicht gezählt, da es einen späteren Akzentunterschied gibt)
  • pêche
  • péché
  • péche
  • pêcher
  • Französische Ordnung
  • Es gibt stets einen sekundären oder tertiären Unterschied. Es kann die französische UnicodeOrder (isSecondaryBackward [istSekundärRückwärts] oder isTertiaryBackward [istTertiärRückwärts]) eingestellt werden. Wenn einer der beiden rückwärts ist, dann tritt der Vergleich jener beiden UnicodeOrders an die erste Stelle vor den vorhergehenden UnicodeOrders dieser Klasse (sekundär oder tertiär)
  • Mehrfachverzeichnungen
  • Die Situation ist jedoch eigentlich komplizierter, als es die obenstehende Beschreibung erahnen ließe, denn:
  • * ein einzelnes Zeichen kann in einer Reihe von UnicodeOrders verzeichnet sein (wird ein gespaltenes Zeichen genannt).
  • Beispiel:
  • bezüglich primärer Ordnung wird im Deutschen das ä als ae sortiert.
  • * eine Reihe von Zeichen kann in einer einzigen UnicodeOrder verzeichnet sein (werden als gruppierte Zeichen bezeichnet).
  • Beispiel:
  • bezüglich primärer Ordnung wird das ch im Spanischen als ein einzelnes Zeichen zwischen c und d sortiert. Im allgemeinen unterstützt der Taligent-Vergleichsvorgang alle Fälle, wo eine Reihe von einem (oder mehreren) Zeichen in einer Reihe von einer (oder mehreren) UnicodeOrders verzeichnet sein kann, was eine Kombination aus gruppierten und gespaltenen Zeichen ist.
  • * Abhängig von den Zeichen können die sich daraus ergebenden UnicodeOrders in einer Reihe neu angeordnet werden.
  • Beispiel
  • = a + Oberpunkt + Unterpunkt = a + Unterpunkt + Oberpunkt
  • Dieses letzte Merkmal ist auf bestimmte ignorierbare Zeichen (wie zum Beispiel Akzente) zurückzuführen, die in unterschiedlichen Ordnungen aufscheinen. In bestimmten Schriften (wie zum Beispiel Thai) werden die Buchstaben in einer anderen Reihenfolge geschrieben, als sie ausgesprochen oder verglichen werden. Der grundlegende Textvergleichsvorgang bietet keine Möglichkeiten für komplexere Reihenfolgen, wie zum Beispiel jene, die sich in Thai finden, aber er bietet einen Rahmen für die Einteilung von Unterklassen, um ausgeklügeltere, wörterbuchbasierte UnicodeOrders zu ermöglichen, die für solche Sprachen verwendet werden können.
  • UnicodeOrder-Iteration
  • Logischerweise werden zwei Ketten immer dann, wenn sie miteinander verglichen werden, jeweils in einer Reihenfolge von UnicodeOrders verzeichnet. Diese Verarbeitung erfolgt durch die Verwendung eines CompareTextIterators (VergleichsTextIterator), der durch einen Vergleich und eine Kette geschaffen wird. Jedesmal, wenn das Next-Verfahren aufgerufen wird, wird die nächste UnicodeOrder von der Kette wiederaufgefunden. Wenn die Kette erschöpft ist, wird eine UnicodeOrder zurückgegeben, deren primärer Wert EOF ist. Es ist wichtig, zu wissen, wo der bedeutsame Unterschied beim Vergleichen zweier Ketten auftrat. Der Compare- TextIterator kann angefordert werden, die null-basierte Verschiebung der aktuellen Kette wiederaufzufinden (die Verschiebung am Beginn der Kette ist Null). Dies ist die letzte Verschiebung im Text unmittelbar vor der UnicodeOrder, die soeben wiederaufgefunden wurde. Nehmen wir zum Beispiel an, ein spanischer CompareTextIterator wird in der Kette "achu" dazu aufgerufen, die verschobene Kette wiederaufzufinden, und eine Vergleichsordnung zu erhalten. Dabei werden die folgenden Ergebnisse erhalten (wobei UO(x) die dem x entsprechende UnicodeOrder ist)
  • 0, UO(a), 1, UO(ch), 3, UO(u), 4
  • Intern verwendet der Iterator den Vergleich, um Zeichen in den UnicodeOrders zu verzeichnen. Für eine einfache 1:1- Übereinstimmung wird das Zeichen in ein Wörterbuch aufgenommen. Diese Verarbeitung ermöglicht bei den meisten Zeichen einen raschen Zugriff. Bei gruppierten oder gespaltenen Zeichen wird ein zweiter Mechanismus verwendet, um einen komplizierten Zugang zu ermöglichen. Nehmen wir an, es läge die folgende Ordnung vor:
  • 'E«< a=a/' < ä/e «< b «< c «< ch «< cch «< d «< e
  • Diese Ordnung wird durch die in Figur 5 dargestellte Datenstruktur repräsentiert. Darin bezieht sich die Beschriftung 500 auf ', -, auf a, b, d oder e wird zugegriffen, die Verzeichnung ist direkt (der Akut und der Trennstrich sind vernachlässigbare Zeichen). Bei der Beschriftung 510 ist das Zeichen a gespalten, und zwei Teile der Information werden zurückgegeben. Der erste sind die UnicodeOrders des Beginns der Reihe, und der zweite ist eine Reihe aus einem oder mehreren zusätzlichen Zeichen. Bei Beschriftung 520 sind die Zeichen ä ebenfalls gespalten. Die in der Tabelle gespeicherten Informationen können jedoch vorverarbeitet werden, um eine Liste von UnicodeOrders darzustellen. Dies geschieht, indem jene UnicodeOrders nachgeschlagen werden, die den verbleibenden Zeichen entsprechen. Diese Optimierung kann unter zwei Bedingungen geschehen: die Zeichenreihe kann keine neuordnenden Akzente enthalten, und der Textvergleich muß vollständig sein (alle Zeichen müssen über entsprechende UnicodeOrders verfügen). In diesem Fall verfügt ä über eine UnicodeOrder, die tertiär größer ist als a, gefolgt von der UnicodeOrder für ein e).
  • In diesem Fall können die zusätzlichen Zeichen, welche die Beschriftung 550 aufweisen, nicht wie in 520 optimiert werden, weil z noch nicht verzeichnet wurde.
  • Bei der Beschriftung 530 wird, wenn auf das cch zugegriffen wird, zuerst das c überprüft, wobei ein Zeiger auf ein zweites Wörterbuch gefunden wird. Das zweite Wörterbuch wird auf ein c überprüft, wobei ein Zeiger auf ein drittes Wörterbuch gefunden wird. Das dritte Wörterbuch hat ein h, daher gibt es eine Übereinstimmung, und es wird die UnicodeOrder < 7,0,0> ausgegeben. Wenn die Kette cco enthielt, würde bei der Beschriftung 540 die letzte Übereinstimmung nicht entsprechen, und die Reihe der UnicodeOrders entsprechend dem cc würde zurückgegeben werden. Es ist zu beachten, daß im Nichtübereinstimmungsfall immer jene Reihe enthält, die das Ergebnis geworden wäre, wenn die Reihe nicht existiert hätte, daher ist keine Sicherungskopie notwendig. Schließlich wird bei der Beschriftung 560, wenn ein Zeichen x ohne Übereinstimmung gefunden wird, dessen Wert 64K + Unicode(x),0,0. Die sich ergebenden UnicodeOrders werden intern aufbewahrt und einzeln nacheinander zurückgegeben.
  • Neuordnende Akzente
  • Bestimmte nichtraumeinnehmende Markierungen (Akzente) können in einer Kette in unterschiedlicher Ordnung auftreten, aber dieselbe Interpretation haben, wenn sie typographisch aufeinander keine Auswirkungen haben. So ist zum Beispiel a + Unterpunkt + Zirkumflex äquivalent mit a + Zirkumflex + Unterpunkt. Jede nichtraumeinnehmende Unicode-Markierung verfügt über eine zugeordnete nichtraumeinnehmende Priorität (raumeinnehmende Markierungen haben eine Null- Priorität). Wenn ein Zeichen gefunden wird, das eine Nicht- Null-Priorität hat, wird ein Neuordnungsvorgang aufgerufen. Im wesentlichen wird jede Reihenfolge von Markierungen mit Nicht-Null-Priorität sortiert, und deren UnicodeOrders werden in dieser sortierten Reihenfolge zurückgegeben. Wenn der Iterator nach der Kettenposition gefragt wird, wird die Position vor der ersten nicht zurückgegebenen UnicodeOrder zurückgegeben.
  • Zum Beispiel
  • a + Unterpunkt + Trema Æ
  • a + Trema + Unterpunkt
  • a + Trema + Unterpunkt Æ
  • a + Trema + Unterpunkt
  • Da der Unterpunkt über eine größere nichtraumeinnehmende Priorität verfügt als der Zirkumflex, gibt der Iterator die UnicodeOrder für a zurück, dann für das Trema, dann für den Unterpunkt. Da jedoch Trema und Kürzezeichen dieselbe nichtraumeinnehmende Priorität aufweisen (weil sie typographisch aufeinander Auswirkungen haben), ordnen sie sich nicht neu "-Æ" bedeutet "verzeichnet nicht in"
  • a + Kürzezeichen + Trema
  • -Æ a + Trema + Kürzezeichen
  • a + Trema + Kürzezeichen
  • -Æ a + Kürzezeichen + Trema
  • Bezüglich des Steuerungsablaufs erfolgt das Gruppieren nach dem Spalten und Neuordnen. Wenn daher das ä ein gruppiertes Zeichen ist (wie dies im Schwedischen der Fall ist) , ergibt sich daraus die in Figur 6 dargestellte Gruppierung.
  • Steuerungsablauf
  • Es gibt zwei sehr häufige Fälle beim Vergleich von Ketten: die UnicodeOrders sind vollkommen gleich (primär, sekundär und tertiär), oder vollkommen unterschiedlich (primär unterschiedlich) Im ersten Fall wird der linken Hauptsäule von oben nach unten gefolgt, wenn im zweiten Fall der zweiten Säule auf der linken Seite gefolgt wird. Jn diesen typischen Fällen ist die Anzahl der Vorgänge sehr gering.
  • Dieser Steuerungsablauf drückt den logischen Vorgang aus: es gibt eine Reihe von Optimierungen, die ebenfalls in Abhängigkeit von der Maschinenarchitektur ausgeführt werden können. Wenn zum Beispiel die UnicodeOrder richtig konstruiert ist, dann kann die primäre, sekundäre und tertiäre Gleichheitsprüfung mit einem Maschinenbefehl ausgeführt werden.
  • Der Anwender kann, abhängig vom erwünschten Stärkegrad für den Vergleich, Optionen für diesen Vorgang festlegen. So kann zum Beispiel der Parameter userMatchStrength ('anwenderÜbereinstimmungsStärke') auf normal gesetzt werden, oder auf primaryAndSecondaryOnly ('nurPrimärUndSekundär') (wobei hier die tertiären Felder nicht übereinstimmen müssen, z.B. wie bei a = A), oder auf primaryMatchOnly ('nurPrimärÜbereinstimmung') (wo die Ketten nur in ihren primären Feldern übereinstimmen müssen, z.B. â = A)
  • Konstruktion eines Textvergleichs
  • Sooft eine Verzeichnung hinzugefügt wird, muß die Stärke der Beziehung zwischen jenem Zeichen und dem letzten im Vergleich festgelegt werden: gleich, primär&sekundär gleich, oder primär gleich, oder strikt größer. (Wenn die Verzeichnung die erste im Vergleich ist, dann wird für die "letzte" Verzeichnung (vernachlässigbar, 0, 0> angenommen. Alle diese erstellen eine UnicodeOrder basierend auf der letzten UnicodeOrder im Textvergleich (im folgenden werden primär, sekundär und tertiär jeweils mit p., 5. bzw. t. abgekürzt), wie dies in Figur 7 dargestellt ist.
  • Next CharacterOrder (Nächste ZeichenOrdnung)
  • Auch die Ausrichtung des tertiären oder sekundären Unterschiedes muß festgelegt werden: normale oder französische Unterschiede. Auf Grund dessen kann der Tabelle eine neue Zeichenverzeichnung hinzugefügt werden, indem eine Alternative von mehreren möglichen hinzugefügt wird.
  • a. ein einzelnes Zeichen x&sub1;
  • b. ein gruppiertes Zeichen x&sub1;...xn
  • c. ein gespaltenes Zeichen x&sub1;/y&sub1;..yn (x&sub1; erweitert sich zu &ge; letztes + y&sub1; .. yn)
  • d. ein gruppiertes/gespaltenes Zeichen x&sub1;..xn/y&sub1;..yn (x&sub1;..xn erweitert sich zu &ge; letztes + yn..yn)
  • e. nichtverzeichnet (nichtverzeichnete Zeichen hier)
  • In den obigen Fällen ist jedesmal dann, wenn x&sub2;..xn oder y&sub1;..yn auftritt, der Vergleich nicht vollständig, bis diese definiert werden. Wenn zum Beispiel x/y&sub1;..yn hinzugefügt wird, erhält x eine neue UnicodeOrder gemäß der obenstehenden Tabelle, aber die anderen y werden gestoppt, bis deren UnicodeOrders definiert werden. Wenn diese definiert sind, dann verzeichnet x in UO(x) + UO(y&sub1;) + ... + UO(yn).
  • Nachdem ein Textvergleich gebildet ist, können die sich darin befindlichen Daten durch Wiederholung vom ersten Element bis zum letzten wiederaufgefunden werden.
  • Textvergleiche zusammenmischen
  • Nachdem ein Textvergleich gebildet wurde, legt dieser eine Ordnung auf die Zeichen auf. Ein zweiter Textvergleich kann mit dem ersten vermischt werden, so daß alle Verzeichnungen (ausgenommen nichtverzeichnete Zeichen) im ersten erhalten bleiben, und so viele der neuen Verzeichnungen vom zweiten erhalten bleiben, wie dies möglich ist. Ein Beispiel dafür ist das Zusammenmischen eines französischen Textvergleichs mit einem arabischen Textvergleich. Sämtliche Beziehungen unter den arabischen Zeichen (einschließlich der Zeichen, die beiden Textvergleichen gemein sind, wie zum Beispiel die Zeichensetzung) sollten bewahrt werden; Beziehungen zwischen neuen Zeichen (z.B. Latein), die nicht im arabischen Textvergleich enthalten sind, werden hinzugefügt.
  • Mischvorgang
  • Erstelle einen dritten Textvergleich TC&sub3; durch Wiederholen durch TC&sub2; auffolgende Art und Weise, wobei jede neue Verzeichnung wie folgt hinzugefügt wird. Für jedes neue Zeichen b ist die Beziehung zur vorhergehenden Verzeichnung mostrecent (unmittelbarvorhergehend) in TC&sub2; zu merken.
  • 1. Wenn b bereits in TC&sub1; enthalten ist, überspringe es, und setze mostRecent auf b zurück.
  • 2. Wenn ein Zeichen oder eine Unterkette von Zeichen von b bereits in TC&sub1; enthalten ist, überspringe es.
  • 3. Andernfalls füge b so "nahe zu" mostrecent wie möglich hinzu, und setze mostrecent auf b zurück. Das heißt, wenn b = mostRecent, füge es hinzu, wenn es unmittelbar danach steht. Wenn b > mostRecent, dann füge b unmittelbar vor dem ersten Element ein, das zumindest tertiär größer ist als mostRecent. Wenn b » most- Recent, dann füge es vor dem ersten Element hinzu, das zumindest primär größer ist als mostRecent.
  • Beispiel:
  • Angenommen, der Textvergleich enthält folgendes:
  • TC&sub1; : = ... U = v < w « X «< z ..
  • Flußdiagramm der Logik
  • Figur 8 ist ein Flußdiagramm der detaillierten Logik gemäß dem Erfindungsgegenstand. Die Verarbeitung beginnt beim Funktionsblock 200, wo das temporäre Ergebnisse auf einen vorherbestimmten Wert initialisiert wird. Dann, beim Eingabeblock 202, werden der nächste Quellenschlüssel und der nächste Zielschlüssel erhalten. Beim Entscheidungsblock 204 wird eine Prüfung durchgeführt, um zu bestimmen, ob der Quellenprimärwert gleich ist wie der Zielprimärwert. Wenn der Quellenprimärwert nicht gleich ist, dann wird beim Entscheidungsblock 214 eine weitere Überprüfung durchgeführt, um zu bestimmen, ob der Quellenprimärwert vernachlässigbar ist. Wenn ja, wird eine weitere überprüfung beim Entscheidungsblock 220 durchgeführt, um zu bestimmen, ob der Suchschlüssel nur eine übereinstimmung des Primärwertes enthalten sollte oder eine zusätzliche sekundäre Information.
  • Wenn nur eine primäre übereinstimmung erwünscht ist, dann wurde eine Übereinstimmung abgeschlossen, und die Kontrolle wird zum Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge zum Entscheidungsblock 204 weitergegeben. Wenn es erwünscht ist, daß eine sekundäre Übereinstimmung ebenfalls am Entscheidungsblock 220 erkannt werden soll, dann wird eine Überprüfung beim Entscheidungsblock 230 durchgeführt, um zu bestimmen, ob der Quellensekundärwert vernachlässigbar ist. Wenn der Quellensekundärwert nicht vernachlässigbar ist, dann wird das temporäre Ergebnis aktualisiert, indem die Quellenposition, die Zielposition und die sekundäre Position gleich auf GREATER (GRÖSSER) gesetzt werden. Die Kontrolle wird dann an den Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn der Quellensekundärwert vernachlässigbar ist, wie dies am Entscheidungsblock 230 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 232 durchgeführt, um zu bestimmen, ob nur eine sekundäre Übereinstimmung erwünscht ist, oder ob eine tertiäre Information gespeichert wurde. Wenn dies der Fall ist, wird die Kontrolle an den Entscheidungsblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn nicht, wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und die sekundäre Position gleich auf GREATER (GRÖSSER) gestellt werden. Dann wird die Kontrolle zum Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben.
  • Wenn der Quellenprimärwert am Entscheidungsblock 214 nicht vernachlässigbar ist, dann wird eine weitere Überprüfung am Entscheidungsblock 216 durchgeführt, um zu bestimmen, ob der Zielprimärwert vernachlässigbar ist. Wenn dies der Fall ist, wird eine weitere Überprüfung am Entscheidungsblock 222 durchgeführt, um zu bestimmen, ob der Suchschlüssel nur eine Übereinstimmung des primären Wertes oder auch zusätzliche sekundäre Informationen enthalten sollte. Wenn nur eine primäre übereinstimmung erwünscht ist, dann wurde eine Übereinstimmung abgeschlossen, und die Kontrolle wird an den Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn nicht, wird eine weitere Überprüfung am Entscheidungsblock 234 durchgeführt, um zu bestimmen, ob der Zielsekundärwert vernachlässigbar ist. Wenn dies der Fall ist, wird das temporäre Ergebnis aktualisiert, indem die Quellenposition, die Zielposition und der sekundäre Vergleich gleich auf LESS (KLEINER) gestellt werden. Danach wird die Kontrolle an den Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und daraufhin wird sie an den Entscheidungsblock 204 weitergegeben. Wenn der Zielsekundärwert nicht vernachlässigbar ist, wie dies am Entscheidungsblock 236 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 236 durchgeführt, um zu bestimmen, ob eine sekundäre Übereinstimmung erwünscht ist, oder ob ein gespeicherter tertiärer Wert oder ein Quellentertiärwert gleich vernachlässigbar ist. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben. Wenn nicht, wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und der sekundäre Vergleich gleich auf LESS (KLEINER) gestellt werden. Danach wird die Kontrolle zum Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben.
  • Wenn der Zielprimärwert am Entscheidungsblock 216 vernachlässigbar ist, dann wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und der Primärvergleich gleich auf das Primärvergleichsergebnis gestellt wird, und die Kontrolle wird zum Entscheidungsblock 210 weitergegeben.
  • Wenn der Quellenprimärwert dem Zielprimärwert gleicht, wie dies am Entscheidungsblock 204 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 206 durchgeführt, um zu bestimmen, ob der Quellenprimärwert gleich einem Endoffile-(EOF)-Zeichen (EndeDerDatei-Zeichen) ist. Wenn dies der Fall ist, wird das temporäre Ergebnis am Ausgabeterminal 208 zurückgegeben. Wenn nicht, wird die Kontrolle zum Entscheidungsblock 210 weitergegeben, um zu bestimmen, ob der Quellensekundärwert gleich dem Zielsekundärwert ist. Wenn nicht, wird eine weitere Überprüfung am Entscheidungsblock 224 durchgeführt, um zu bestimmen, ob die Quellenund Zielinformationen gespeichert wurden. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird das temporäre Ergebnis gleich der Quellenposition, der Zielposition und dem Sekundärvergleichsergebnis im Funktionsblock 246 gesetzt, und die Kontrolle wird zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten.
  • Wenn der Quellensekundärwert gleich dem Zielsekundärwert ist, wie dies am Entscheidungsblock 210 erkannt wird, dann wird eine weitere überprüfung am Entscheidungsblock 212 durchgeführt, um zu bestimmen, ob der Quellentertiärwert gleich dem Zieltertiärwert ist. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird eine Überprüfung am Entscheidungsblock 226 durchgeführt, um zu bestimmen, ob die Quellen- und Zielinformationen gespeichert wurden oder tertiäre Informationen. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird das temporäre Ergebnis gleich der Quellenposition, der Zielposition und dem Tertiärvergleichsergebnis im Funktionsblock 246 gesetzt, und die Kontrolle wird zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten.
  • Figur 9 ist ein Beispiel einer Anzeige gemäß dem Erfindungsgegenstand. Die Anzeige entspricht einem System, welches es ermöglicht, Sprachattribute jedem xxx zuzuordnen. Mit diesem System kann der Anwender den bevorzugten Textvergleich für eine beliebige Sprache auswählen und den Textvergleich mit unmarkiertem Text (Text ohne Sprachattribut) verbinden. Darüberhinaus kann ein Anwender auch einen neuen Textvergleich erstellen oder einen bereits bestehenden verändern. Während der Bearbeitung wird dem Anwender eine Tabelle zur Verfügung gestellt, wie sie in Figur 9 dargestellt ist, worin Verzeichnungen im Vergleich in aufsteigender Reihenfolge angeführt werden. Wie im Falle einer standardmäßigen Tabellenbearbeitung kann der Anwender eine oder mehrere Verzeichnungen mit der Maus auswählen. Die ausgewählten Punkte können daraufhin gelöscht, ausgeschnitten, kopiert oder durch Ziehen mit der Maus verschoben werden. Es kann auch eine neue Verzeichnung an jedem beliebigen Punkt eingefügt werden.
  • Die ganz links befindliche Spalte 900 zeigt die Beziehung der aktuellen Verzeichnung mit der vorhergehenden (oberen) Verzeichnung an. Wenn mit der Maus auf die Spalte geklickt wird, erscheint ein Pop-up-Menü mit einer Auswahl an Symbolen: für primär-größer, sekundär-größer, tertiär-größer, oder gleich; und ein orthogonaler Satz, womit französischsekundär und/oder französisch-tertiär angezeigt wird.
  • Es gibt eine spezielle Verzeichnung, die Verzeichnung unverzeichneter Zeichen, welche ein Symbol enthält, das darauf hinweist, daß alle unverzeichneten Zeichen an diesen Punkt gehören. Da es immer genau eine derartige Position im Textvergleich gibt, wird diese Verzeichnung auf spezielle Weise gehandhabt. Wenn sie gelöscht wird, erscheint sie am Ende der Verzeichnung wieder. Wenn eine andere eingefügt wird, wird jede zuvor bestandene Verzeichnung unverzeichneter Zeichen entfernt. Die mittlere Spalte 910 enthält das/die Hauptzeichen in der Verzeichnung; die ganz rechts befindliche Spalte enthält die Expansionszeichen (falls derartige vorhanden sind). Diese können ebenso bearbeitet werden wie jeder andere Text im System.
  • SCHNELLE SPRACHENSENSITIVE SUCHE Einführung
  • Genauso wie implodierende, explodierende, vernachlässigbare, primäre/sekundäre/tertiäre Themen für den Vergleich relevant sind, sind sie auch für die Suche relevant. Wenn zum Beispiel eine Suche im Dänischen durchgeführt wird, muß aa mit å gleichgesetzt werden. Es gibt eine Anzahl von Vorgängen für schnelles (sublineares) Suchen von Text. Keiner dieser Vorgänge kann jedoch diesen sprachsensitiven Anforderungen entsprechen. Um sich nun mit diesen Bereichen zu beschäftigen, verwendet eine bevorzugte Ausführungsform eine Abwandlung des Boyer-Moore-Prozesses (BM), der sowohl sublinear als auch sprachsensitiv ist. Der BM-Prozeß wird im Detail in Boyer, R. & Moore, S., A Fast String Searching Algorithm (Ein schneller Ketten-Suchalgorithmus), Commun. ACM 20, Seite 762-772 (1977) offenbart, der hiermit in seiner Gesamtheit als Referenz aufgenommen wird.
  • Die bevorzugte Ausführungsform kann auch dieselben Daten verwenden, die in einem Textvergleich erzeugt werden, so daß Suche und Vergleich synchron gehalten werden. Dies bedeutet auch, daß dieselben Veränderungen, die ein Anwender für die Erstellung eines neuen Textvergleiches vornimmt, auch für die Erstellung einer richtigen sprachsensitiven Suche genügen. Es gibt hier zwei weitere abgeleitete Informationen, die zur Suche benötigt werden, zusätzlich zu dem, was für den Vergleich benötigt wird. Diese Erfordernisse werden unten beschrieben. Manche schnellen Suchprozesse sind nicht in der Lage, in umgekehrter Reihenfolge zu arbeiten; stattdessen überprüfen sie das erste Zeichen nach der Kette, wenn eine Übereinstimmung nicht zustandekommt (z.B. Sunday, D.M., A very fast substring search algorithm (Ein sehr schneller Unterketten-Suchalgorithmus), Commun. ACM 33, 8. Seite 132-142 (Aug. 1990). Diese Technik funktioniert bei sprachsensitiven Vergleichen nicht gut, denn da zwei Ketten unterschiedlicher Länge einander entsprechen können, kann nicht auf zufriedenstellende Weise bestimmt werden, wo sich das "Ende" der Kette im Ziel, welches dem "Ende" des Musters entspricht, befindet. In den folgenden Beispielen werden wir einen einfachen künstlichen Textvergleich verwenden, der eine englische Ordnung für die Buchstaben plus dem folgenden aufweist:
  • ^ (nichtraumeinnehmender Zirkumflex, vernachlässigbar)
  • a < ä/e
  • A < Ä/e
  • o < o-/o
  • O < O-/o
  • z «< å < aa < Å < Aa < AA «< < oe < < Oe < Oe
  • Es ist zu beachten, daß für Vergleichszwecke der Unterschied zwischen explodierenden und implodierenden Zeichen wichtig ist, aber für das Suchen im allgemeinen nicht von Bedeutung ist. Das heißt, bei einer Sekundärstärkenübereinstimmung ist es nicht von Bedeutung, ob der Textvergleich a < ä/e oder ae < ä ist: baed und bäd entsprechen einander in beiden Fällen. Sehr wohl von Bedeutung ist der Unterschied jedoch am Ende eines Musters. Das heißt, ba sollte in baed, nicht aber in baad gefunden werden.
  • Textvergleichserweiterungen
  • Die folgenden Erweiterungen werden am Textvergleich vorgenommen.
  • a. die Datenbank der Verzeichnungen muß auch in der Lage sein, eine Kette in umgekehrter Reihenfolge zu bearbeiten, insbesondere implodierende und explodierende Verzeichnungen in umgekehrter Reihenfolge wiederauf zuf inden.
  • Beispiel:
  • das Nachschlagen in der Unicode-Ordnung zuerst für e und dann für o (rückwärtiges Vorgehen) erzeugt o.
  • b. jede Folge von Zeichen, die einem kleineren explodierenden Zeichen entsprechen könnte, muß in der Datenbank enthalten sein, mit einer Verzeichnung in der kleineren Breite.
  • Beispiel:
  • oo muß nicht enthalten sein, da es dem Produkt von o- entspricht, welches dieselbe Länge aufweist. Jedoch ist es sehr wohl nötig, daß ae enthalten ist, da es dem ä entspricht, welches kürzer ist.
  • c. der Textvergleich muß in der Lage sein, die kumulative minimale Übereinstimmungslänge (siehe unten) zurückzugeben, wenn eine Kette bearbeitet wird.
  • Beispiel:
  • bei der Bearbeitung von e, dann von a (denken Sie an dessen Rückwärtsverarbeitung) oder ä wird die minimale Übereinstimmungslänge 1 sein.
  • Überblick über den Prozeß
  • Der Prozeß weist die folgende grundlegende Struktur auf:
  • Ziel:
  • Suche nach einer Musterkette innerhalb einer Zielkette.
  • Eingabe:
  • Musterkette, Zielkette, Stärke (primär, sekundär, tertiär, bitweise), Textvergleich
  • Prozeß:
  • Wie bei Boyer-Moore besteht der erste Schritt darin, die Musterkette mit dem Textvergleich vorzubearbeiten, um eine Indextabelle zu erzeugen (nähere Details siehe nächsten Abschnitt). In der Hauptschleife wird die Musterkette der Reihe nach durch das Ziel verschoben. Bei jeder neuen Position wird die Musterkette vom Ende her bearbeitet, wobei nach Übereinstimmungen Ausschau gehalten wird. Der Textvergleich wird verwendet, um die Zielkette in rückwärtiger Ordnung zu bearbeiten, wobei die Unicode-Ordnungen (UO) nachgeschlagen werden. Wenn eine Übereinstimmung nicht zustande kommt, wird eine Indextabelle verwendet, um die Musterkette um eine festgelegte Größe zu verschieben.
  • Mustervorverarbeitung
  • Im folgenden wird der Prozeß für die Vorverarbeitung der Muster beschrieben, der den Großteil der Arbeit erledigt. Die Beschreibung ist die logische Reihenfolge, und Optimierungen werden aus Gründen der Verständlichkeit weggelassen. Eine grundlegende Optimierung ist die Schaffung von zwei Indextabellen, da eine bevorzugte Ausführungsform sowohl das Vorwärtssuchen als auch das Rückwärtssuchen unterstützt. Zur Erstellung der Tabellen und der Muster für das Rückwärtssuchen werden entsprechende Änderungen im Prozeß durchgeführt.
  • 1. Finde die Unicode-Ordnungen für die Kette (dadurch werden implodierende und explodierende Zeichen normalisiert, und Akzente, wie zum Beispiel der Oberpunkt und der Unterpunkt, neu geordnet).
  • 2. Setze die Ordnungen gemäß der Eingabestärke zurück:
  • * wenn die Eingabestärke sekundär ist, fülle die tertiären Werte mit Nullen
  • * wenn sie primär ist, fülle die sekundären und tertiären Werte mit Nullen
  • 3. Entferne alle vernachlässigbaren Unicode-Ordnungen mit Null-Unterschieden (nachdem Schritt 2 ausgeführt wurde).
  • Hinweis:
  • * wenn die Eingabestärke tertiär ist, werden dadurch alle vernachlässigbaren mit Null-Unterschieden entfernt (z.B. Links-Rechtsmarkierung).
  • * wenn die Eingabestärke sekundär ist, werden dadurch alle vernachlässigbaren mit tertiären oder Null-Unterschieden entfernt.
  • * wenn die Eingabestärke primär ist, werden dadurch alle vernachlässigbaren mit sekundären, tertiären oder Null-Unterschieden entfernt (z .B. nichtraumeinnehmende Markierungen)
  • 4. Berechne aus den Informationen im Textvergleich die Mindestnachziehübereinstimmungslänge (MTML) für jede einzelne Position im Muster, welche die Mindestlänge ist, die jede Kette, welche den Nachziehelementen am Ende des Musters entspricht, haben kann.
  • Beispiel:
  • Bei der Musterordnung verfügt das Muster, welches "baedåf" entspricht, über eine Mindestlänge von 5 (entspricht bädåf). [Mit Vernachlässigbaren könnte es Ketten mit einer Länge von bis zu sieben Zeichen entsprechen (z.B. baedaaf) - ohne Vernachlässigbare könnte es unendlich langen Ketten entsprechen (b^a^e^d^^^^a^af)]
  • Die Tabelle mit MTMLs für dieses Muster wäre folgendermaßen (wobei die Buchstaben für die entsprechenden Unicode- Ordnungen stehen)
  • 5. Der Boyer-Moore-Prozeß verwendet eine Tabelle, die nach Positionen indexiert ist, und eine Tabelle, die nach Zeichen indexiert ist. In dieser Variante entspricht letzteres dem Indexieren durch die Unicode-Ordnung. Erstelle die Indextabellen für die Musterkette durch Durchqueren der Liste der Unicode-Ordnungen von hinten nach vorne wie in Boyer- Moore, um die folgenden Änderungen durchzuführen:
  • Der Index zeigt an allen Positionen, wie weit die verarbeitete Kette an jener Position zu verschieben ist, wenn eine übereinstimmung gegen die Unicode-Ordnung an jener Position nicht zustandegekommen ist. Der Indexwert sollte der zu verschiebende Mindestwert sein (unter Verwendung der MTML- Tabelle), so daß die aktuelle Nachziehunterkette als nächste im Muster gefunden werden könnte.
  • Beispiel:
  • beim Muster obaexydbae sieht die Verschiebetabelle wie folgt aus (die Buchstaben stehen hier für die entsprechenden Unicode-Ordnungen)
  • Angenommen, es gibt eine Nichtübereinstimmung bei d gegen ein o im Zieltext (") Der Verschiebewert ist 5, weil das am weitesten rechts stehende Auftreten von obae nach einer Nachziehreihe mit einer Länge von 5 (&ne;) auftritt.
  • 6. Es kann eine große Anzahl an Unicode-Ordnungen geben, nicht nur 256, wie in der 8-Bit-Version von Boyer-Moore. Aus Geschwindigkeits- und Speichergründen besteht die durch Unicode-Ordnung indexierte Indextabelle aus einer kleinen Matrix an Integer-Zahlen (z.B. 256 Integer-Zahlen). Wenn ein Verschiebewert der Tabelle für eine gegebene Unicode- Ordnung hinzugefügt wird, wird die Unicode-Ordnung in eine Integer-Zahl innerhalb des von der Matrix bedeckten Bereiches zerkleinert.
  • Wenn nur die primären Stärken erwünscht sind, erfolgt dies durch Verwendung eines Modulos mit der Größe der Matrix (wenn hierbei ein Potenz von zwei ausgewählt wird, ist der Modub nur eine Maskierung). Wenn mehr als nur die primäre Stärke erfordert ist, werden die sekundäre oder sowohl die sekundäre als auch die tertiäre eingespeichert, bevor der Modulo verwendet wird.
  • Wenn es mehrere Verschiebewerte gibt (aufgrund von Modulo- Kollisionen), wird das Minimum der Werte aufgezeichnet. Dies kann dazu führen, daß es geringer ist als der optimale Wert, aber in der Praxis beeinflußt dies die Gesamtleistung nicht wesentlich.
  • Suchen mit den verarbeiteten Mustern
  • Wenn eine Zielkette mit einem verarbeiteten Muster abgeglichen wird, kann der standardmäßige Boyer-Moore-Prozeß mit den folgenden Anderungen verwendet werden, wie sie in der bevorzugten Ausführungsform widergespiegelt werden:
  • 1. Beim Wiederauffinden von Zeichen aus dem Zieltext wandle diese in Unicode-Ordnungen um (dies geschieht dann, wenn auf jedes einzelne Zeichen zugegriffen wird; es ist nicht notwendig, den gesamten Zieltext umzuwandeln!). Die Iteration durch den Text erfolgt in umgekehrter Reihenfolge. Es wird dieselbe Normalisierung (Mustervorverarbeitung Punkte 1-3 oben) wie bei der Erzeugung der verarbeiteten Muster verwendet, um die Stärken zurückzusetzen und die Vernachlässigbaren zu entfernen.
  • 2. Überprüfe ausdrücklich jede vom Text abgeleitete Unicode-Ordnung mit dem Muster. Wenn es eine Nichtübereinstimmung gibt, verwende die Indextabellen, um den Verschiebewert zu finden.
  • 3. Nach dem Finden einer übereinstimmung muß der Prozeß auch nach dem Ende der Kette prüfen. Wenn eine der folgenden Bedingungen auftritt, kommt die Übereinstimmung nicht zustande, und sie wird um 1 verschoben und die Suche wird fortgesetzt:
  • * Wenn es Vernachlässigbare nach dem Ende gibt, die stärker sind als die Eingabestärke. Beispiel: das Finden von ba in xxba^xx: wo die Eingabestärke zwischen a und â unterscheidet, sollte diese Übereinstimmung nicht erfolgreich sein.
  • * Wenn es ein implodierendes Zeichen gibt, welches sich über das Ende der Kette erstreckt. Beispiel: ba sollte in baed gefunden werden, aber es sollte nicht in baad gefunden werden. (Dies kann zu einer Anwenderoption gemacht werden, um eine bessere Kontrolle zu ermöglichen.)
  • Zustandstabellenverfahren
  • Ein weiteres Verfahren zur Konstruktion eines sprachsensitiven Suchers ist die Herstellung einer Zustandsmaschine, die jede der verschiedenen Formen (baed und bad) erkennt, und auch alle vernachlässigbaren Zeichen verwirft. Im allgemeinen erbringt diese Technik jedoch nicht so gute Leistungen wie die Sublinearverfahren, wie zum Beispiel jenes Verfahren, das in Gonnet, G.H. und Baeza-Yates, R., Handbook of Algorithms and Data Structures - In Pascal and C. (Handbuch der Algorithmen und Datenstrukturen - In Pascal und C), zweite Ausgabe, Addison-Wesley, Wokingham, UK, 1991, diskutiert wird. In diesem Zusammenhang beruht eine Schlüsseifrage jedoch auf der Anzahl der Vergleiche, die bei den einzelnen Verfahren benötigt werden, sowie der Nachschlagezeit pro Zeichen in der Zustandstabelle im Vergleich zum Textvergleich. Beim Textvergleich ist die Nachschlagezeit sehr kurz, solange es sich bei dem Zeichen nicht um ein explodierendes oder implodierendes Zeichen handelt; daher hängt die Leistung vom Anteil derartiger Zeichen im Zieltext ab, der im allgemeinen recht gering ist. Durch das Speichern eines Markierungszeichens im Textvergleich, ob die Zielsprache einen großen Anteil derartiger Zeichen aufweist oder nicht, kann während des Durchlaufs eine Auswahl darüber getroffen werden, welche Technik anzuwenden sei.

Claims (14)

1. Ein Computersystem zur Herstellung einer Vergleichsordnung zwischen einer ersten Textkette und einer zweiten Textkette, wobei die erste Textkette aus Zeichen einer ersten Sprache mit einer ersten vorgegebenen Zeichenpriorität und die zweite Textkette aus Zeichen einer zweiten Sprache mit einer zweiten vorgegebenen Zeichenpriorität besteht, mit einem Prozessor (10) und einem Speicher (14), worin die besagte erste und zweite Zeichenkette sowie ein vielsprachiges Alphabel in einer Hauptsortierordnung enthalten sind und worin jedem Zeichen wenigstens einen Ordnungswert zugeordnet ist, sowie mit Mitteln zum Wiederauffinden von Informationen im Speicher, gekennzeichnet durch:
(a) Mittel zur Definition eines primären (204), eines sekundären (210) und eines tertiären (212) Ordnungswertes für wenigstens einen Teil der Zeichen, basierend auf der Zeichenpriorität der ersten und zweiten Sprache;
(b) Mittel zur Speicherung der primären, sekundären und tertiären Ordnungswerte im Speicher;
(c) Mittel zum Wiederauffinden von Paaren von Zeichen (202) im Speicher, die ein erstes Zeichen aus der besagter ersten Textkette und ein zweites Zeichen aus besagter zweiten Textkette enthalten;
(d) auf das erste Zeichen und das zweite Zeichen ansprechende Mittel zum Wiederauff inden der zugeordneten primären Ordnungswerte und, soweit für das erste und/oder das zweite Zeichen verfügbar, auch der zugeordneten sekundären und tertiären Ordnungswerte (260, 262);
(e) Mittel zur Durchführung eines Vergleichs der wiederaufgefundenen Werte zur Bestimmung einer Differenz zwischen besagter ersten und zweiten Textkette, wobei die Stärke des Vergleichs von besagtem primären zu besagtem sekundären und zu besagtem tertiären Ordnungswert abnimmt (220, 222, 224, 226, 232, 236); und
(f) auf die Differenz ansprechende Mittel zur Bestimmung der Vergleichsordnung (240, 242, 244, 246, 250, 252) zwischen der ersten Textkette und der zweiten Textkette.
2. Das Computersystem gemäß Anspruch 1, worin die Mittel zur Definition der Ordnungswerte Mittel aufweisen zur Erzeugung einer Tabelle der ausgewählten Zeichen (910) und ihrer zugeordneten primären, sekundären und tertiären Ordnungswerte (900), basierend auf der Zeichenpriorität der ersten und/oder zweiten Sprache; und worin Mittel zur Speicherung der Tabelle im Speicher (14) vorgesehen sind.
3. Das Computersystem gemäß Anspruch 2, worin die Mittel zur Erzeugung besagter Tabelle Mittel aufweisen zur Erzeugung einer Tabelle, die für jeden Satz von Zeichen und ihren zugeordneten Ordnungswerten darauf bezogene Ordnungswerte für Erweiterung, Gruppierung, Ignoranz und Sequenz enthält.
4. Das Computersystem gemäß Anspruch 3, worin die Mittel zur Erzeugung besagter Tabelle Mittel aufweisen zur Erzeugung einer Tabelle, die für jeden Satz von Zeichen und ihren zugeordneten Ordnungswerten darauf bezogene Ordnungswerte für Erweiterung, Gruppierung, sekundäre Ignoranz, tertiäre Ignoranz, französisch-sekundär und französisch-tertiär enthält.
5. Das Computersystem gemäß Anspruch 1, worin die Mittel zur Definition enthalten:
Mittel zur Definition von wenigstens einem ersten Ordnungswert (204) für jedes Zeichen, basierend auf der Zeichenpriorität der ersten Sprache;
Mittel zur Definition von wenigstens einem zweiten Ordnungswert (204) für jedes Zeichen, basierend auf der Zeichenpriorität der zweiten Sprache; und
Mittel zum Mischen der ersten und zweiten Ordnungswerte (240, 242, 244, 246, 250, 252).
6. Das Computersystem gemäß Anspruch 1, worin die Mittel zur Definition von wenigstens einem Ordnungswert (204) für jedes Zeichen durch den Benutzer gesteuerte Mittel enthalten zur Änderung der einem jeden Zeichen zugeordneten Ordnungswerte in Abhängigkeit vom gewünschten Vergleichsresultat (900, 910).
7. Das Computersystem gemäß Anspruch 1, enthaltend eine mit dem Prozessor (10) und dem Speicher (14) verbundene (36, 12) Anzeigevorrichtung (38), die vom Prozessor (10) gesteuert wird zur Anzeige von im Speicher gespeicherten Informationen, und worin die Mittel zur Definition Mittel enthalten zur Erzeugung einer tabellarischen Anzeige zur Zuordnung der Ordnungswerte zu jedem Zeichen (900, 910).
8. Ein Verfahren zur Herstellung einer Vergleichsordnung zwischen einer ersten Textkette und einer zweiten Textkette, wobei die erste Textkette aus Zeichen einer ersten Sprache mit einer ersten vorgegebenen Zeichenpriorität und die zweite Textkette aus Zeichen einer zweiten Sprache mit einer zweiten vorgegebenen Zeichenpriorität besteht, das Verfahren ist ausführbar in einem Computersystem, das einen Prozessor (10) und einen Speicher (14) enthält, und weist die Schritte auf, im besagten Speicher die besagte erste und zweite Textkette sowie ein vielsprachiges Alphabets in einer Hauptsortierordnung zu speichern, worin jedem Zeichen wenigstens einen Ordnungswert zugeordnet ist, sowie Informationen im Speicher wiederaufzufinden, gekennzeichnet durch die Schritte:
(a) Definition eines primären (204) , eines sekundären (210) und eines tertiären (212) Ordnungswertes für wenigstens einen Teil der Zeichen, basierend auf der Zeichenpriorität der ersten und zweiten Sprache;
(b) Speicherung der primären, sekundären und tertiären Ordnungswerte im Speicher;
(c) Wiederauffinden von Paaren von Zeichen (202) im Speicher, die ein erstes Zeichen aus der besagter ersten Textkette und ein zweites Zeichen aus besagter zweiten Textkette enthalten;
(d) unter Verwendung des ersten Zeichens und des zweiten Zeichens Wiederauff inden der zugeordneten primären Ordnungswerte und, soweit für das erste und/oder das zweite Zeichen verfügbar, auch der zugeordneten sekundären und tertiären Ordnungswerte (260, 262);
(e) Durchführung eines Vergleichs der wiederaufgefundenen Werte zur Bestimmung einer Differenz zwischen besagter ersten und zweiten Textkette, wobei die Stärke des Vergleichs von besagtem primären zu besagtem sekundären und zu besagtem tertiären Ordnungswert abnimmt (220, 222, 224, 226, 232, 236); und
(f) Bestimmung der Vergleichsordnung (240, 242, 244, 246, 250, 252) zwischen der ersten Textkette und der zweiten Textkette unter Verwendung der Differenz.
9. Das Verfahren gemäß Anspruch 8, worin der Schritt zur Definition der Ordnungswerte den Schritt der Erzeugung einer Tabelle der ausgewählten Zeichen (910) und ihrer zugeordneten primären, sekundären und tertiären Ordnungswerte (900), basierend auf der Zeichenpriorität der ersten und/oder zweiten Sprache; und den Schritt der Speicherung der Tabelle im Speicher (14) enthält.
10. Das Verfahren gemäß Anspruch 9, worin der Schritt zur Erzeugung besagter Tabelle den Schritt der Erzeugung einer Tabelle aufweist, die für jeden Satz von Zeichen und ihren zugeordneten Ordnungswerten darauf bezogene Ordnungswerte für Erweiterung, Gruppierung, Ignoranz und Sequenz enthält.
11. Das Verfahren gemäß Anspruch 10, worin der Schritt zur zur Erzeugung besagter Tabelle den Schritt der Erzeugung einer Tabelle aufweist, die für jeden Satz von Zeichen und ihren zugeordneten Ordnungswerten darauf bezogene Ordnungswerte für Erweiterung, Gruppierung, sekundäre Ignoranz, tertiäre Ignoranz, französisch-sekundär und französisch-tertiär enthält.
12. Das Verfahren gemäß Anspruch 8, worin der Schritt (a) zur Definition die Schritte enthält:
Definition von wenigstens einem ersten Ordnungswert (204) für jedes Zeichen, basierend auf der Zeichenpriorität der ersten Sprache;
Definition von wenigstens einem zweiten Ordnungswert (204) für jedes Zeichen, basierend auf der Zeichenpriorität der zweiten Sprache; und
Mischen der ersten und zweiten Ordnungswerte (240, 242, 244, 246, 250, 252).
13. Das Verfahren gemäß Anspruch 8, worin der Schritt (a) zur Definition den vom Benutzer gesteuerten Schritt zur Änderung der einem jeden Zeichen zugeordneten Ordnungswerte in Abhängigkeit vom gewünschten Vergleichsresultat (900, 910) enthält.
14. Das Verfahren gemäß Anspruch 8, worin das Computersystem weiter enthält eine mit dem Prozessor (10) und dem Speicher (14) verbundene (36, 12) Anzeigevorrichtung (38), die vom Prozessor (10) gesteuert wird zur Anzeige von im Speicher gespeicherten Informationen, und worin der Schritt (a) zur Definition weiter den Schritt der Erzeugung einer tabellarischen Anzeige enthält zur Zuordnung der Ordnungswerte zu jedem Zeichen (900, 910).
DE69400207T 1993-03-25 1994-01-03 Sprachabhängiges textvergleichssystem Expired - Lifetime DE69400207T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/036,749 US5440482A (en) 1993-03-25 1993-03-25 Forward and reverse Boyer-Moore string searching of multilingual text having a defined collation order
PCT/US1994/000006 WO1994022096A1 (en) 1993-03-25 1994-01-03 Language-sensitive collation system

Publications (2)

Publication Number Publication Date
DE69400207D1 DE69400207D1 (de) 1996-06-27
DE69400207T2 true DE69400207T2 (de) 1997-01-16

Family

ID=21890421

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69400207T Expired - Lifetime DE69400207T2 (de) 1993-03-25 1994-01-03 Sprachabhängiges textvergleichssystem

Country Status (7)

Country Link
US (1) US5440482A (de)
EP (1) EP0672283B1 (de)
JP (1) JPH08508123A (de)
AU (1) AU6017994A (de)
CA (1) CA2145672A1 (de)
DE (1) DE69400207T2 (de)
WO (1) WO1994022096A1 (de)

Families Citing this family (176)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485373A (en) * 1993-03-25 1996-01-16 Taligent, Inc. Language-sensitive text searching system with modified Boyer-Moore process
JP3457061B2 (ja) * 1994-06-28 2003-10-14 富士通株式会社 属性混在文字列のソート装置及び属性混在文字列のソート方法
US5737594A (en) * 1994-07-05 1998-04-07 Trustus Pty Ltd. Method for matching elements of two groups
US5778356A (en) * 1994-11-10 1998-07-07 Cadis, Inc. Dynamically selectable language display system for object oriented database management system
US5687366A (en) * 1995-05-05 1997-11-11 Apple Computer, Inc. Crossing locale boundaries to provide services
US6701428B1 (en) * 1995-05-05 2004-03-02 Apple Computer, Inc. Retrieval of services by attribute
US5675818A (en) * 1995-06-12 1997-10-07 Borland International, Inc. System and methods for improved sorting with national language support
JPH09198398A (ja) * 1996-01-16 1997-07-31 Fujitsu Ltd パターン検索装置
US5754840A (en) * 1996-01-23 1998-05-19 Smartpatents, Inc. System, method, and computer program product for developing and maintaining documents which includes analyzing a patent application with regards to the specification and claims
US5873111A (en) * 1996-05-10 1999-02-16 Apple Computer, Inc. Method and system for collation in a processing system of a variety of distinct sets of information
US6370498B1 (en) 1998-06-15 2002-04-09 Maria Ruth Angelica Flores Apparatus and methods for multi-lingual user access
US6460015B1 (en) * 1998-12-15 2002-10-01 International Business Machines Corporation Method, system and computer program product for automatic character transliteration in a text string object
US7099876B1 (en) 1998-12-15 2006-08-29 International Business Machines Corporation Method, system and computer program product for storing transliteration and/or phonetic spelling information in a text string class
US6496844B1 (en) 1998-12-15 2002-12-17 International Business Machines Corporation Method, system and computer program product for providing a user interface with alternative display language choices
US6389386B1 (en) 1998-12-15 2002-05-14 International Business Machines Corporation Method, system and computer program product for sorting text strings
US6289513B1 (en) * 1999-06-01 2001-09-11 Isaac Bentwich Interactive application generation and text processing
KR100372582B1 (ko) * 2000-02-23 2003-02-17 가부시키가이샤 히타치세이사쿠쇼 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체
US6618724B1 (en) * 2000-04-17 2003-09-09 Sun Microsystems, Inc. Human-natural string compare for filesystems
US7051278B1 (en) 2000-07-10 2006-05-23 International Business Machines Corporation Method of, system for, and computer program product for scoping the conversion of unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets
US7278100B1 (en) 2000-07-10 2007-10-02 International Business Machines Corporation Translating a non-unicode string stored in a constant into unicode, and storing the unicode into the constant
US6400287B1 (en) 2000-07-10 2002-06-04 International Business Machines Corporation Data structure for creating, scoping, and converting to unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets
US6754668B2 (en) * 2000-10-24 2004-06-22 Raytheon Company Multilingual system having dynamic language selection
CA2348239C (en) * 2001-05-18 2005-04-19 Ibm Canada Limited-Ibm Canada Limitee Culturally correct ordering of keyed records
US6877003B2 (en) * 2001-05-31 2005-04-05 Oracle International Corporation Efficient collation element structure for handling large numbers of characters
CA2390849A1 (en) * 2002-06-18 2003-12-18 Ibm Canada Limited-Ibm Canada Limitee System and method for sorting data
US7155442B2 (en) * 2002-06-28 2006-12-26 Microsoft Corporation Compressed normalized character comparison with inversion
US7617202B2 (en) * 2003-06-16 2009-11-10 Microsoft Corporation Systems and methods that employ a distributional analysis on a query log to improve search results
US20050005239A1 (en) * 2003-07-03 2005-01-06 Richards James L. System and method for automatic insertion of cross references in a document
CA2453971C (en) * 2003-12-23 2009-08-11 Daniel A. Rose On-demand creation of java locale source
CA2453973A1 (en) * 2003-12-23 2005-06-23 Daniel A. Rose On-demand creation of posix locale source
DE102004037230A1 (de) * 2004-07-31 2006-02-16 Robert Bosch Gmbh Verfahren zur Suche von Suchzeichenketten und Einrichtung hierfür
US20060235662A1 (en) * 2005-04-15 2006-10-19 Argentar David R Eliminating redundant patterns in a method using position indices of symbols to discover patterns in sequences of symbols
US9275019B2 (en) * 2007-12-21 2016-03-01 Sap Se System and method for performing Unicode matching
JP5391583B2 (ja) * 2008-05-29 2014-01-15 富士通株式会社 検索装置、生成装置、プログラム、検索方法および生成方法
US8682644B1 (en) 2011-06-30 2014-03-25 Google Inc. Multi-language sorting index
US9509757B2 (en) 2011-06-30 2016-11-29 Google Inc. Parallel sorting key generation
US20140019718A1 (en) * 2012-07-10 2014-01-16 Shihjong J. Kuo Vectorized pattern searching
US9268567B2 (en) * 2012-09-30 2016-02-23 Intel Corporation Instruction and logic for boyer-moore search of text strings
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408404B (zh) 2015-02-06 2021-02-12 美光科技公司 用于存储器装置的设备及方法以作为程序指令的存储
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
WO2016144726A1 (en) 2015-03-12 2016-09-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11256862B2 (en) 2018-10-23 2022-02-22 International Business Machines Corporation Cognitive collation configuration for enhancing multilingual data governance and management
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4686522A (en) * 1985-02-19 1987-08-11 International Business Machines Corporation Method of editing graphic objects in an interactive draw graphic system using implicit editing actions
CA1265623A (en) * 1987-06-11 1990-02-06 Eddy Lee Method of facilitating computer sorting
CA1280215C (en) * 1987-09-28 1991-02-12 Eddy Lee Multilingual ordered data retrieval system
US5077669A (en) * 1989-12-27 1991-12-31 International Business Machines Corporation Method for quasi-key search within a national language support (nls) data processing system
US5218700A (en) * 1990-01-30 1993-06-08 Allen Beechick Apparatus and method for sorting a list of items

Also Published As

Publication number Publication date
JPH08508123A (ja) 1996-08-27
AU6017994A (en) 1994-10-11
EP0672283A1 (de) 1995-09-20
WO1994022096A1 (en) 1994-09-29
CA2145672A1 (en) 1994-09-29
EP0672283B1 (de) 1996-05-22
US5440482A (en) 1995-08-08
DE69400207D1 (de) 1996-06-27

Similar Documents

Publication Publication Date Title
DE69400207T2 (de) Sprachabhängiges textvergleichssystem
DE69400869T2 (de) System zum transkribieren von texteingaben
DE69527331T2 (de) Datenwiedererfindungssystem, Datenverarbeitungssystem, Datenwiedererfindungsverfahren und Datenverarbeitungsverfahren
DE69400276T2 (de) Zeichensatzsystem für texteingabe
DE69719858T2 (de) Dokumentanzeigesystem und elektronisches Wörterbuch
DE3586273T2 (de) Implizite erzeugung einer superblockstruktur in einem vieldaten-edierungsgeraet.
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE68929038T2 (de) Verfahren zur Verarbeitung von digitalen Textdaten
DE3586274T2 (de) Vieldaten-edierungsgeraet mit gebrauch von attributstroemen fuer textobjekte.
DE3586272T2 (de) Integriertes vieldaten-edierungsgeraet.
DE69126805T2 (de) Datenformatumwandlung
DE3852672T2 (de) Verfahren zur Vereinfachung des Sortierens mit dem Rechner.
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE69900854T2 (de) Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät
DE3685671T2 (de) Aufzeichnungs- und wiederauffindungsverfahren fuer chemische strukturdaten.
DE3782447T2 (de) Dokumentverarbeitungsapparat.
DE69229521T2 (de) Datenbankauffindungssystem
DE3587501T3 (de) Gerät, Verfahren und Struktur zur Umwandlung eines Dokumentes einer Struktur in ein Dokument einer anderen Struktur.
DE69602359T2 (de) Transfer von bilddaten
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE69026764T2 (de) Verfahren zur Datenübertragung mit hoher Geschwindigkeit
DE3788782T2 (de) Verfahren zur Herstellung einer Meldungsdatei in einem Computer.
JPH05290098A (ja) データベースからの情報をスケール付きで表示する装置及び方法
DE69934195T2 (de) Identifikation einer Wortgruppe durch modifizierte Schlüsselwörter, die aus Transformationen von aufeinanderfolgenden Suffixen erzeugt sind

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: OBJECT TECHNOLOGY LICENSING CORP., CUPERTINO, CALI