ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 51
Abonament PDF

Căutarea și analiza textelor în SAP HANA

Iulia Bicu
Software Developer @ Siemens România



PROGRAMARE

Acest articol prezintă opțiunile furnizate de SAP HANA în ce privește căutarea și analiza textelor și documentelor. Aceste opțiuni oferă numeroase moduri de a utiliza platforma HANA, în special în aplicații business, care nu au fost echipate cu aceste tipuri de funcții până acum. Platforma SAP HANA oferă utilizatorului posibilitatea de a căuta și vizualiza conținutul tabelelor cu aceeași simplitate pe care o dă și căutarea pe Internet.

Funcția de căutare text asigură o anumită toleranță la erori și este posibilă procesarea a termenilor și sinonimelor multilingve. Un exemplul ar fi introducerea într-un câmp a valorii "buenes eires tele", și găsirea valorii corecte în ciuda ortografiei incorecte și a căutării prin mai multe coloane.

Cu toate acestea, utilizatorii nu pot întotdeauna determina ușor dacă rezultatul obținut este cel așteptat în acest tip de căutare toleranța la erori, numită fuzzy search. V-ați întrebat de ce ați obținut uneori rezultate neașteptate atunci când efectuați o căutare pe Internet?

Recunoașterea de pattern-uri în texte și documente reprezintă o cu totul altă funcție de analiză de text.

De exemplu, se pot recunoaște relațiile și chiar intențiile sau sentimentele dintr-un anumit text. Să ne imaginăm că aveți un magazin web care permite clienților să comande online produse, precum și postarea comentariilor despre produse și furnizor. Așa numita "Analiză Sentiment" face parte din motorul funcționalității de prelucrare a textului în SAP HANA și vă permite să recunoașteți pattern-uri în aceste tipuri de date nestructurate. În contextul unui magazin online, de exemplu, îți oferă posibilitatea să analizezi dacă la un anumit produs există comentarii mai mult pozitive sau negative.

Căutarea rapidă pentru șiruri în texte:

Găsirea cuvintelor similare(toleranță la erori):

Găsirea formelor lingvistice pentru același cuvânt:

Figura 1. Exemple de căutare text

Principii de bază a căutării și analizei de text în SAP HANA

Înainte de activarea funcției de căutare, rețineți următoarele condiții:

Scopul principal al funcției de căutare text în SAP HANA este de a oferi utilizatorilor o utilizare optimizată în căutarea la nivel de interfață.

Aceasta implică următoarele caracteristici:

Folosirea căutării text prin intermediul SQL

Cum este în cazul majorității funcțiilor în SAP HANA, puteți accesa căutarea de text prin intermediul limbajului SQL. Pentru a face acest lucru trebuie să utilizați declarația SELECT cu cuvântul cheie CONTAINS, care vă permite căutarea de text. Sintaxa standard este următoarea:

Următoarele exemple oferă o primă idee despre cum puteți utiliza clauza CONTAINS.

SELECT \* FROM "MYTABLE" WHERE CONTAINS 
("FIELD1" ,  , EXACT)

Căutarea pe mai multe coloane

Declarația CONTAINS vă permite să specificați mai multe coloane pentru a fi luate în considerare în timpul căutării. Următoarele exemple indică căutarea într-o listă de coloane sau în toate coloanele (freestyle).

Există și posibilitatea de căutare în uniunea coloanelor specificate. Pentru aceste exemple vom folosi tabela Documents, care conține trei câmpuri: ID, TITLE și ABSTRACT și are următorul conținut:

Figura 2. Tabela Documents și conținutul ei

În exemplul următor se va face căutarea cuvântului 'business' în câmpurile TITLE și ABSTRACT.

SELECT * FROM "DOCUMENTS" WHERE 
CONTAINS (("TITLE","ABSTRACT"), 'business');

Iar în acest exemplu, căutarea după 'business software' va avea loc în toate câmpurile.

SELECT * FROM "DOCUMENTS" WHERE
CONTAINS (*, 'business software');

Tipuri de date text și full text index în SAP HANA

Căutarea fuzzy în SAP HANA se bazează pe tipurile de date stocate pe coloane. Aici, TEXT și SHORTTEXT reprezintă două tipuri de date specifice, care sunt specializate pentru căutări de text (și analizele de text). Tipul de date SHORTTEXT este utilizat pentru șiruri de caractere de o anumită lungime (similar cu NVARCHAR), întrucât TEXT reprezintă un obiect mare (similar cu NCLOB- tipul de date SQL pentru un string în ABAP Data Dictionary). În acest context, textele sunt fragmentate în tokens, care constituie baza pentru căutări și analize.

Din păcate, totuși, în prezent nu există suport disponibil în ABAP pentru tipurile de date TEXT și SHORTTEXT. Deci nu este posibilă crearea unei tabele în ABAP Data Dictionary care utilizează aceste tipuri de date. Deși funcția de căutare fuzzy, acceptă alte tipuri de date (VARCHAR și NVARCHAR, de exemplu), nu este suficient de extinsă, prin urmare, căutarea fuzzy în general nu este recomandată aici. Fără posibilitatea de a împărți textele în tokens, sistemul nu este capabil să recunoască o permutare de cuvinte, care este un standard în aplicațiile moderne.

Full Text Index

Ce puteți face constă în adăugarea funcționalității oferite de tipurile de date text la o anumită coloană prin crearea unui indice de text complet (full text index). În acest fel, puteți activa funcțiile de căutare text și cele de analiză de text pentru majoritatea tipurilor de date din ABAP Dictionary (inclusiv CHAR, STRING, și așa mai departe).

Când creați un index de text complet pentru un tabel orientat pe coloană, sistemul creează o coloană în interior, invizibilă ( shadow column) de tipul TEXT, care conține aceleași date, dar este pusă într-o prezentare optimizată pentru căutare.

În acest context, textul este fragmentat în tokens și suplimentar este generat un dicționar. În Figura 3. veți vedea un exemplu bazat pe numele companiei aeriene. Trebuie să rețineți că această coloană invizibilă (shadow column) există numai în memoria principală.

Figura 3. Crearea unui indice de text complet (full text index)

Puteți crea indicele de text complet cu declarația CREATE FULLTEXT INDEX. Sintaxa este următoarea:

CREATE FULLTEXT INDEX <index-name> 
ON <table> (<column>) <options>

Cazurile în care este necesară crearea unui index de text complet, sunt următoarele:

A. Pentru căutarea exactă, și anume găsirea exactă a cuvintelor conținute și scrierea acestora corect în momentul căutării.

În exemplul următor din Figura 6. , folosim tabela Messages care conține trei câmpuri ID, MESSAGE și LANG (Vezi Figura 4.) și Indexul text complet creat (în Figura 5.) pentru căutarea exactă a valorii 'businesses'.

Figura 4. Tabela Messages Figura 5. Indexul text complet

select * from MESSAGES WHERE CONTAINS 
("MESSAGE", 'businesses', EXACT);


Figura 6. Căutarea exactă cu ajutorul unui index text complet

B. Pentru căutarea lingvistică, și anume găsirea formelor cuvântului cu aceeași tulpină lingvistică. În exemplul următor, din Figura 7., folosim tabela Messages pentru căutarea lingvistică a cuvântului 'go' .

select ID, MESSAGE, LANG from MESSAGES WHERE 
CONTAINS ("MESSAGE", 'go', LINGUISTIC);

Figura 7. Căutarea lingvistică cu ajutorul unui index text complet

Căutarea cu toleranță la greșeli ( Fuzzy Search)

În SAP HANA, căutarea fuzzy este o funcție de căutare rapidă și tolerantă la erori . O căutare fuzzy returnează înregistrări chiar dacă termenul de căutare conține caractere suplimentare sau caractere lipsă sau alte tipuri de erori de ortografie. Această secțiune oferă o prezentare generală a tehnicilor utilizate pentru căutarea fuzzy în SAP HANA.

Gradul la care datele trebuie să corespundă la solicitarea de căutare, este în general determinată de algoritmii matematici, care formează bazele căutarii fuzzy.

Rezultatul calculului este adesea o valoare numerică, care este utilizată pentru a decide dacă datele sunt suficient de similare cu căutare solicitată.

Cu privire la texte, cel mai simplu tip de algoritm constă în stabilirea numărului minim de operații (cum ar fi înlocuirea și mișcarea de caractere) care sunt necesare pentru a genera o secțiune de date reale de la căutare solicitată.

În practică, este foarte complicată determinarea gradului de similitudine între texte.

Funcția de căutare text în SAP HANA, determină o valoare între 0 și 1 care reprezintă gradul de similitudine. Ca programator, trebuie să definiți o valoare de prag (de exemplu, 0,8) care este valoarea în urma căutării, respectiv a gradului de similitudine dintre valoarea introdusă și cea găsită. Figura 8. conține un exemplu de căutare exactă a textului 'ENTERPRISE' cu gradul de similitudine de 0,8.

SELECT "TITLE", "ABSTRACT"
FROM DOCUMENTS
WHERE contains ("ABSTRACT",'ENTPRISE', FUZZY(0.8));

Figura 8. Căutarea cu grad de similitudine

Funcții speciale

Există disponibile funcții speciale scalare care vă permit să preluați informații suplimentare pentru rezultatele căutării individuale. SAP HANA va pune la dispoziție următoarele funcții: score(), highlighted(), și snippets(). În următorul paragraf puteți vedea o descriere mai detaliată a funcției score().

Funcția score() oferă informații despre gradul de similitudine între rezultatul căutării și căutarea solicitată. Această valoare variază între 0 și 1, iar cu valori mai mari indică un grad mai ridicat de similitudine.
În mod normal, funcția este utilizată pentru sortarea rezultatelor în urma căutării în așa fel încât rezultatele cu un grad mai ridicat de similitudine sunt afișate în partea de sus a listei, față de cele cu o valoare inferioară.

SELECT SCORE (),"TITLE", "ABSTRACT"
FROM "Z003H05R"."DOCUMENTS"
WHERE contains ("ABSTRACT",'ENTPRISE', FUZZY(0.8))
ORDER BY SCORE() DESC;

Figura 9. Folosirea funcției score()

În acest articol am discutat despre arhitectura de bază, utilizarea căutării text și funcțiile de analiză de text în SAP HANA. Au fost menționate câmpurile tabelelor orientate pe coloană, care conțin anumite tipuri de date (TEXT și SHORTTEXT), și asigură funcții puternice pentru căutarea și analizarea datelor nestructurate. Pentru tipurile de text ABAP, puteți utiliza un index text complet (full text index) pentru a crea o coloană de tip TEXT, virtuală.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects

Iulia Bicu a mai scris