FNTSK SKNNK Fonetisk sökning

Relevanta dokument
Vyer, Prepared Statements, Triggers

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

DB2-åtkomst från WebSphere

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Structured Query Language (SQL)

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

2.1 Installation of driver using Internet Installation of driver from disk... 3

Beijer Electronics AB 2000, MA00336A,

Övningar i SQL. SQLAccess.doc Ove Lundgren

WCMS-15, Webbutvecklare CMS

Starta MySQL Query Browser

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

12. Relationer och funktioner

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Labb LABB 15. XML användande i praktiken. Plushögskolan Frågeutveckling inom MSSQL - SU14

Design och underhåll av databaser

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Structured query language (SQL)

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Webbregistrering pa kurs och termin

Styrteknik 4.5/7.5 hp distans: Tidskretsar, räknare

RADIATION TEST REPORT. GAMMA: 30.45k, 59.05k, 118.8k/TM1019 Condition D

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

12. Relationer och funktioner

1.Lär känna MS SQL Observera. Tips. Förberedelse

Skapa exempeldatabasen

TENTAMEN DATABASKUNSKAP ITEK12

Support Manual HoistLocatel Electronic Locks

Karlstads Universitet, Datavetenskap 1

1. PLSQL 2 2. Select into

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

System arbetssystem informationssystem

Exempelsamling Assemblerprogrammering

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Databasutveckling Introduktion till SQL och TSQL

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Webbreg öppen: 26/ /

Translation Changes in Swedish EBSCOhost Interface

public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";

Informa5onsmodellering

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

732G16: Databaser - Design och programmering

Säktest á la ET. Dennis Haglund Konsultchef Test Omegapoint AB

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Tentamen PC-teknik 5 p

SVENSK STANDARD SS-ISO 8734

Kursplan. EN1088 Engelsk språkdidaktik. 7,5 högskolepoäng, Grundnivå 1. English Language Learning and Teaching

PORTSECURITY IN SÖLVESBORG

RUG Trace JDBC error. Sandvik IT Services

Installation av F13 Bråvalla

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

2. Säkerhet 3. Autentisering. 5. Dataintegritet 6. Data privacy 7. PuL 8. Personuppgifter 9. Säkerhetspolicy. Pär Douhan,

Isolda Purchase - EDI

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Quick Start Guide Snabbguide

WindPRO version feb SHADOW - Main Result. Calculation: inkl Halmstad SWT 2.3. Assumptions for shadow calculations. Shadow receptor-input

Innehåll Programability Del 2

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Taking Flight! Migrating to SAS 9.2!

Digitalteknik och Datorarkitektur 5hp

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

TAGFAK, semicolon separated

TAGFAK_TOTAL, semicolon separated

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

1. SQL DDL (Data Definition Language) 2. Skapa tabell

Databaser - Design och programmering

Laboration SQL. Kom igång.

Product configurations Produire configuration Produkt konfigurationen Producto configuraciones Produkt konfigurationerna

Calculate check digits according to the modulus-11 method

Introduktion till frågespråket SQL (v0.91)

A metadata registry for Japanese construction field

FÖ 13: Databaskursen. Pär Douhan,

Produktens väg från idé till grav

Programbeskrivning. Chaos på Web. Version

Från Excel laddningar till web arbetsflöden

Transkript:

FNTSK SKNNK Fonetisk sökning Sven Heidorn Centrala Studiestödsnämnden sven.heidorn@csn.se Swedish DB2 User Group 05/01/19

Bakgrund CSN gör s.k. SPAR-sökningar på namn hos InfoData för ca. 100 000 kr/månad CSN besitter till 99% själv uppgifterna som eftersöks i SPAR Dom höga kostnaderna, det faktum att CSN redan har de uppgifter man söker samt budgetnerskärningar, leder till utveckling av en sökfunktion mot de egna registren

Första problemet... Som så ofta med namnfält och z/os används SWEDSORT för att få rätt sortering av ÅÄÖ Namnsökning (fritext) bygger med största sannolikhet på LIKE LIKE är inte indexerbart i kombination med FIELD Procedures, dvs. SWEDSORT DBA erna stoppar utvecklad lösning

Andra problemet Karlsson Karlson Karlzon Carlsson Carlson Carlzon + alla andra namn med samma mönster

Soundex Finns som standard i bl.a. DB2 och MSSQL Ursprungligen utvecklad i slutet av 1800-talet Används i huvudsak för sökning av efternamn, t.ex. vid flygbokningar och släktforskning Fungerar i princip endast med engelska namn

Metaphone Vidareutveckling av soundex Skapades 1990 av Lawrence Philips Skapades för att kompensera för brister i soundex Vidareutvecklades år 2000 ytterligare till Double Metaphone Används bl.a. i Aspell som är en stavningskontroll

Phonetic UDF C++ DMetaphone C++ CREATE FUNCTION CSNFUN.PHONETIC (VARCHAR(128)) RETURNS VARCHAR(128) EXTERNAL NAME Phonetic!Phonetic' LANGUAGE C PARAMETER STYLE SQL DETERMINISTIC FENCED RETURNS NULL ON NULL INPUT NO SQL NO EXTERNAL ACTION NO SCRATCHPAD ALLOW PARALLEL; Phonetic.dll DB2 UDB LUW <install path>\sqllib\function

Heidorn, Sven EXPORT to file.ixf of ixf messages msgfile.txt select <other data>, name, <other data>, phonetic(name) from your.usertable LOAD from file.ixf of ixf messages msgfile.txt replace into your.usertable Heidorn, Sven HTRNSFN

INSERT CREATE TRIGGER INSTPHON NO CASCADE BEFORE INSERT ON your.usrtable REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL BEGIN ATOMIC set new.name_phonetic = phonetic(new.name) ; END# UPDATE CREATE TRIGGER CSNDBA.UPDTPHON NO CASCADE BEFORE UPDATE OF NAMN ON your.usertable REFERENCING NEW AS NEW FOR EACH ROW MODE DB2SQL BEGIN ATOMIC set new.name_phonetic = phonetic(new.name) ; END#

Applikations Program EXEC SQL SELECT PHONETIC(:hv-name) INTO :hv-name-phonetic:ind-name-phonetic FROM SYSIBM.SYSDUMMY1 WITH UR END-EXEC. EXEC SQL INSERT INTO your.usertable VALUES (<other data>, :hv-name, <other data>, :hv-name-phonetic) END-EXEC

Double Metaphone kodar bokstäver i strängar Övriga tecken ignoreras select rtrim(phonetic('anka')) '%' rtrim(phonetic('kalle')) '%' as soek_straeng from sysibm.sysdummy1 SOEK_STRAENG -------------------------------------------- ANK%KL%

SELECT ID, NAME, NAME_PHONETIC FROM your.usertable WHERE NAME_PHONETIC LIKE 'ANK%KL%' ID NAME NAME_PHONETIC ----------- ------------------------------- ----------------- 38009940 Anka, Kalle ANKKL 16229163 ENGLUND ÖGGE, LINDA MARGARETA ANKLNTKLNTMRKRT 12608295 WANGLER, JOHANNA ULRICA ELISE ANKLRJHNLRKLS 38414389 INGMAN, ANDERS NICLAS ANKMNNTRSNKLS 50304823 INKOMST, KALLE ANKMSTKL 10202695 ENGBLOM, INGA ELISABETH LINNÉA ANKPLMNKLSP0LN 43009935 ENGBERG, LARS ERIK ANKPRKLRSRK 31244569 ANKARBERG, ULF ROGER ANKRPRKLFRKR

Heidorn, Sven Heidorn Sven Phonetic( Sven ) Phonetic( Heidorn ) HTRN SFN HTRN SFN

Bättre träffbild och därmed färre förvirrande resultat Likvärdigt med separata kolumner SELECT ID, NAME, NAME_PHONETIC FROM your.usertable WHERE NAME_PHONETIC LIKE 'ANK%KL%' ID NAME NAME_PHONETIC ----------- ------------------------------- ----------------- 38009940 Anka, Kalle ANK KL 38414389 INGMAN, ANDERS NICLAS ANKMN ANTRS NKLS 50304823 INKOMST, KALLE ANKMST KL

z/os Double Metaphone har konverterats från C++ till Cobol Cobol-koden har anpassats direkt för att kunna implementeras som en UDF (Phonetic) Ytterligare en UDF (String_Phonetic) för att kunna hantera strängar med mer än ett namn

Phonetic UDF Cobol CREATE FUNCTION CSNFUN.PHONETIC (VARCHAR(128)) RETURNS VARCHAR(128) SPECIFIC PHONETIC EXTERNAL NAME 'PHONETIC' LANGUAGE COBOL PARAMETER STYLE DB2SQL DETERMINISTIC RETURNS NULL ON NULL INPUT NO SQL NO EXTERNAL ACTION ALLOW PARALLEL WLM ENVIRONMENT DB22T9E1 ASUTIME LIMIT 1024 STAY RESIDENT YES PROGRAM TYPE SUB RUN OPTIONS 'TRAP(OFF),RPTOPTS(OFF), H(,,ANY),STAC(,,ANY,),STO(,,,4K),BE(4K,,),LIBS(4K,,),ALL31(ON)'; WLM DB2 UDB z/os

Utestående problem LUW SELECT ID, NAME, NAME_PHONETIC FROM your.usertable WHERE NAMN_PHONETIC LIKE RTRIM(RTRIM(PHONETIC('Anka')) CONCAT '%' CONCAT RTRIM(PHONETIC('Kalle')) CONCAT '%') ID NAME NAME_PHONETIC ----------- ----------------------- ------------------- 38009940 Anka, Kalle ANK KL 38414389 INGMAN, ANDERS NICLAS ANKMN ANTRS NKLS 50304823 INKOMST, KALLE ANKMST KL

Utestående problem z/os SELECT ID, NAME, NAME_PHONETIC FROM your.usertable WHERE NAME_PHONETIC LIKE RTRIM(RTRIM(PHONETIC('Anka')) CONCAT '%' CONCAT RTRIM(PHONETIC('Kalle')) CONCAT '%') DSNT408I SQLCODE = -132, ERROR: AN OPERAND OF LIKE IS NOT VALID DSNT418I SQLSTATE = 42824 SQLSTATE RETURN CODE DSNT415I SQLERRP = DSNHSM2P SQL PROCEDURE DETECTING ERROR DSNT416I SQLERRD = 0 0 0-1 295 0 SQL DIAGNOSTIC INFORMATION DSNT416I SQLERRD = X'00000000' X'00000000' X'00000000' X'FFFFFFFF' X'00000127' X'00000000' SQL DIAGNOSTIC INFORMATION

The expression can be specified by any one of the following: A constant A special register A host variable (including a LOB locator variable) A scalar function whose arguments are any of the above (though nested function invocations cannot be used) A CAST specification whose arguments are any of the above An expression that concatenates (using CONCAT or ) any of the above

Utestående problem z/os SELECT ID, NAME, NAME_PHONETIC FROM your.usertable WHERE NAME_PHONETIC LIKE PHONETIC('Anka') CONCAT '%' DSNT408I SQLCODE = -132, ERROR: AN OPERAND OF IS NOT VALID DSNT418I SQLSTATE = 42824 SQLSTATE RETURN CODE DSNT415I SQLERRP = DSNXOW2D SQL PROCEDURE DETECTING ERROR DSNT416I SQLERRD = -202 0 0-1 0 0 SQL DIAGNOSTIC INFORMATION DSNT416I SQLERRD = X FFFFFF36' X'00000000' X'00000000' X'FFFFFFFF' X'00000000' X'00000000' SQL DIAGNOSTIC INFORMATION???????

Mer info http://aspell.net/metaphone/ http://jakarta.apache.org/commons/codec/ http://www.cling.gu.se/theses/2002/cl8uglad_cl8mkarl.pdf http://www.creativyst.com/doc/articles/soundex1/soundex1.htm + otaliga websidor med artiklar och exempel på implementationer

Frågor Fonetisk sökning