Textabfrage

Kabelaffe2012

Neuer Benutzer
Beiträge
3
Hallo alle zusammen,

Ich habe eine ziemlich mühsame Aufgabe, wo ich jetzt die Idee hatte, dies vielleicht über die SQL zu lösen. Hoffe mir kann jemand Helfen, würde mir ewig viel Arbeit dadurch sparen:

Ich habe im SQL 2012 eine Tabelle in der in Spalte 1 verscheiden Nummern stehen, in Spalte zwei stehen Texte. Viele dieser Texte dürften gleiche Worte haben (vielleicht Groß und Klein geschrieben) und das Skript, das ich benötige, sollte eine Abfrage starten, wie viel gleiche Match`s, also Worte sind in den jeweiligen Texten.
Ziel dabei ist es, eine Auswertung zu bekommen, dass die Nummer 12345 mit der Nummer 7890 in Spalte 1 eine gleiche Anzahl von X Worten hat. Mehrfachanzeige ist dabei auch möglich, bedeutet das das Ergebnis auch auf Mehrer Nummern passen kann.

Geht so was über ein Script zu Lösen ????
Danke für die Info`s
 
Werbung:
Hallo alle zusammen,

Ich habe eine ziemlich mühsame Aufgabe, wo ich jetzt die Idee hatte, dies vielleicht über die SQL zu lösen. Hoffe mir kann jemand Helfen, würde mir ewig viel Arbeit dadurch sparen:

Ich habe im SQL 2012 eine Tabelle in der in Spalte 1 verscheiden Nummern stehen, in Spalte zwei stehen Texte. Viele dieser Texte dürften gleiche Worte haben (vielleicht Groß und Klein geschrieben) und das Skript, das ich benötige, sollte eine Abfrage starten, wie viel gleiche Match`s, also Worte sind in den jeweiligen Texten.
Ziel dabei ist es, eine Auswertung zu bekommen, dass die Nummer 12345 mit der Nummer 7890 in Spalte 1 eine gleiche Anzahl von X Worten hat. Mehrfachanzeige ist dabei auch möglich, bedeutet das das Ergebnis auch auf Mehrer Nummern passen kann.

Geht so was über ein Script zu Lösen ????
Danke für die Info`s


Das klingt mir nach völlig verkorkster Idee, aber was solls...

Code:
test=*# select * from kabelaffe ;
i |                        t
---+--------------------------------------------------
1 | das ist ein völlig sinnfreier text
2 | noch ein absolut sinnfreier text
3 | es gibt wohl kaum einen text, der sinnfreier ist
(3 rows)
 
Time: 0,161 ms
test=*# select wort, array_agg(i) from (select i, regexp_split_to_table(t,' ') as wort from kabelaffe) foo group by wort ;
    wort    | array_agg
------------+-----------
absolut    | {2}
das        | {1}
der        | {3}
ein        | {1,2}
einen      | {3}
es        | {3}
gibt      | {3}
ist        | {3,1}
kaum      | {3}
noch      | {2}
sinnfreier | {2,1,3}
text      | {2,1}
text,      | {3}
völlig    | {1}
wohl      | {3}
(15 rows)
 
Time: 0,411 ms

in der Spalte array_agg (könnte man auch anders benennen) steht, in welcher ID der Ursprungstabelle das Wort vorkommt. Ist es das, was Du suchst?

Edit: mit PostgreSQL gemacht.


Andreas
 
Hmm, hätte die Frage vielleicht anderst Stellen sollen, ist falsch Verstanden worden, probiere es nochmals:

Tabelle enthält Artikel die Nummern haben. Problem ist, das es die gleichen Artikel in der Tabelle gibt, die verschieden Schreibweisen haben und verschieden Nummernkreise. Die Hauptnummern sind Fünfstellig und die Nebennummer haben das Format 01.01.01, also immer zwei Zaheln mit je ienem Punkt getrennt.
Sinn und Zweck ist es, die Dupletten zu finden unter allen Artikel ( 140 TSd) mit so wenig wie möglicher Handarbeit. Das Script sollte Nachschauen wieviiel gleiche Keywords es hat und dies als Ergebniss ausgeben. Habe die Keywords mal Fett Markiert und das Ergebniss auch Fett unter jedes Beispiel geschrieben

Hier ein paar Beispiele:

Beispiel 1:
Artikelnummer Hauptstamm:
10310

Text:
PVC Mantelleitung NYM-J 3x2,5
nach DIN VDE 0250 in Leerrohr,

Installationskanal oder Kabelträger

einziehen

Artikelnummer Nebenstamm:
01.01.13

Text:
PVC-Mantelleitung DIN VDE 0250in
Teillängen liefern und auf vorhandene
Pritschen und Wannen verlegen, in
Elektroinstallationskanäle einlegen oder
in Leerrohre einziehen als:

NYM-J 3x2,5 qmm Cu 72

Ergebniss:
Nebennummer: 01.01.13
Keywords: Treffer PVC, Mantelleitung, NYM-J, 3x2,5,DIN,VDE,0250,einziehen,Installations,Leerrohr
Treffernummer: 10310

Hierbei können aber auch mehrer Treffernummern aufgeschlüsselt werden

Beispiel 2:
Artikelnummer:
26851

Text:
Universalschalterfür Unterputzmontage
mit Standardwippe, Kombi- oder Einzel-
abdeckung, Fabrikat: "Gira Standard
System 55" (reinweiß), ohne uP-Dose,
liefern und montieren

Nummer Nebenstamm:
04.01.06

UP- Schalt- und Steckgeräte für Einzel-
oder Kombiabdeckung liefern und
montieren als:

UP-Universalschalter, weiß/reinweiß
Ergebniss:
Nebennummer: 04.01.06
Keywords Treffer: Universalschalter,Einzel,Abdeckung,reinweiß,liefern,und,montieren
Treffernummer: 26851

Beispiel 3:
Artikelnummer:
22272

Text:
Flexibles Kunststoffpanzerrohr M 20
hitzebeständig bis 60°C, für alle
Installationen Auf-, Im- oder Unterputz
und im Beton, für mittlere Druckbean-
spruchung, Unterputz mit Mauerschlitz,
liefern und montieren

Nummer Nebenstamm:
02.02.53

Text:
Elektroinstallationsrohrnach VDE 0605
DIN EN50086-1, DIN EN50086-2-2,
Klassifizierung 3341, Maße nach DIN EN
60423 bestehend aus:
PVC-U/ mit Mantel aus PVC-P flammwidrig,
selbstverlöschend Dauergebrauch und
Installationstemperatur min.-25 max.+
60ø C,
Farbe grau RAL 7035
mittlere Druckfestigkeit 720 N/5 cm
mittlere Schlagfestigkeit für alle AP-
und UP-Installationen, für die
Verwendung im Rüttel-, Schütt- u.
Stampfbeton sowie auf Rohfußboden od.
Estrich
Montagehöhe bis 3 mtr.
gleichw. Fränk. Rohrwerke/Hegler liefern
und verlegen als:

biegsames Kunststoffrohr AP- mit
Doppelschellen
Typ FFKuS-EM-F/ESPM, Größe: EN20

Ergebniss:
Nebennummer: 02.02.53
Keywords Treffer: Kunststoff,Rohr, 20
Treffernummer: 22272
Die Sache ist echt verzwickt und ich weiss nicht ob man das über ein Script lösen kann. Wenn als Ergebniss es so Angezeigt wird wie im Beispiel wäre das Genial aber ich habe keine Ahnung ob es geht. Klasse wäre wenn man die Texte der Ergebnissnummern auch noch Anzeigen würde. Ergebniss wäre: ca. 1 Jahr Arbeit per Hand gespart

Bin mal Gespannt ob jemand ein Lösung weiß

Danke schon mal
 
Sinn und Zweck ist es, die Dupletten zu finden unter allen Artikel ( 140 TSd) mit so wenig wie möglicher Handarbeit. Das Script sollte Nachschauen wieviiel gleiche Keywords es hat und dies als Ergebniss ausgeben.

Okay, ich ändere meine Meinung. Das ist keine verkorkste Idee, sondern vorhandener verkorkster Datensalat.

Sieht so aus, als ob da alles als Text gespeichert ist. Das klingt, als ob ihr viele Azubis braucht, sorry. Wie soll ein Programm z.B. wissen, in Datensatz A gelten diese Keywords und in B ganz andere? Da kannst wohl nur noch mit Volltextsuche drin rumstochern.

Andreas
 
Das ist es ja, dachte es gibt vielleichet ein Script/Idee wo/wie das zu Lösen wäre

Naja, einen Ansatz hab ich ja geliefert. Suchst Du ein Wort, bekommst die Liste der Records, in denen es vorkommt. Suchst Du N Wörter, mußt halt die Records kombinieren.
So ganz versth ich das Nummerndingens da nicht, kommt da im Text: "Nummer Nebenstamm:" und in der nächsten Zeile dann 'ne Nummer? Darauf kann man sicherlich suchen.
Aber wozu die gut ist weiß ich nicht.

Na, wie dem auch sei: das wird kein einfaches Ding.

Andreas
 
Werbung:
Ich würde einen kleinen SQL Batch schreiben der zu jedem Text jedes Wort einem Eintrag in einer Tabelle mit allen Wörtern zuordnet. Dann hat man am besten eine Liste mit allen Schlüsselwörtern zur Hand oder man schmeist alle nicht Schlüsselwörter manuell aus der Tabelle. Dann kann man nach vielen Übereinstimmungen suchen.

Das ist alles sehr komplex aber ich finde mit SQL durchaus zu lösen.

Ich hab sowas mal für mein CRM gebastelt um doppelte Unternehmensbezeichnungen die auch leicht von einander abweichen können zu erkennen. Allerdings war das sehr rechenlastig und ist glaube ich hier nicht anwendbar. Hier würde ich nur Wörter mit mehr als 4 Buchstaben indexieren und vergleichen. Kommt ein Wort sehr oft vor taugt es nicht als vergleich, kommt es nur einmal vor auch nicht. Kommt es doppelt oder mehrfach vor steigt die Warscheinlichkeit einer Dublette.
 
Zurück
Oben