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
Înainte de activarea funcției de căutare, rețineți următoarele condiții:
baza de date SAP HANA trebuie să conțină tabele orientate pe coloană.
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:
Căutarea liberă (Freestyle search). Utilizatorul nu trebuie să știe exact coloanele din baza de date în care se presupune a fi efectuată căutarea. De exemplu, se face căutarea adresei pe un singur câmp de introducere și se includ toate caracteristicile tehnice cum ar fi numele străzii, codul poștal, orașul, țara, și așa mai departe.
Căutarea cu toleranță la greșeli (fuzzy search). Utilizatorul poate varia ortografia ușor în căutare.
Căutare lingvistică și căutarea de sinonime.
Sugestii de valoare. Sistemul poate identifica eficient posibile rezultate ale căutării, în timp ce utilizatorul introduce textul, afișându-le utilizatorului în timp real.
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)
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');
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.
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
Î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ă.