Krull: "Unscharfe" Suche in MSSQL-Datenbank

Hallo zusammen.

Wie einigen mittlerweile bekannt sein sollte entwickle ich eine Datenbank zur Archivierung von Wickeldaten.

Nun stehe ich hoffentlich vor meinem letzten Problem.

Und zwar soll die Datenbank "unscharf" durchsucht werden.

Wenn z.B. nach einem Motortyp gesucht wird und dieser in der Datenbank mit:

S10559

steht aber der Suchende jetzt z.B. S 10559 oder 10559 eingibt soll trotzdem der Eintrag S10559 gefunden werden. Gegebenenfalls auch ein paar (2-3) andere.

Ich habe bisher das hier:

  
<?php  
  
error_reporting(E_ALL);  
ini_set('display_errors','Off');  
  
$config = array( das wichtigste hier! );  
  
if($_SERVER['REQUEST_METHOD'] == 'post') {  
	$typ = $_POST['suchtyp'];  
	$suchfeld = $_POST['suchfeld'];  
  
if($suche = trim($suchfeld)) {	  
	if(!get_magic_quotes_gpc()) $suche = addslashes($suche);  
}  
  
$sbs = preg_split('/\s+/',$suche);  
  
foreach ($sbs as $sb) {  
	$sb = preg_replace('/\W/','',$sb);  
	if(strlen($sb) > 0) $suchbegriffe[] = $sb;  
}  
        $conn = odbc_connect($config['db_dsn'],  
                             $config['db_username'],  
                             $config['db_password']);  
  
  
        $check = "SELECT [Fabrikat], [Typ], usw...  
                  FROM [wickel_db].[dbo].[data]  
                  WHERE [$typ]  
                  LIKE '$suchbegriffe[0]%'  
                    AND [$typ]  
                  LIKE '$suchbegriffe[1]%'";  
  
        $exec = odbc_exec($conn,$check);  
  
}  
  
// display template  
include($config['template']);  
  
?> 

Das ganze Funktioniert aber nicht so wie ich mir das vorgestellt habe. s.O.^^

Kann mir in dem Fall jemand helfen?

Oder ein paar Links geben wo ich eine Lösung für das Problem finden könnte?
Oder auch eine Profi-PHP-Script-Suchmaschine die eine MSSQL-Datenbank dursucht?

Ich wäre euch übelst dankbar. Mein Chef drängelt nämlich schon: "Wann is das Ding denn endlich fertig?"
Und ich bin gelernter Elektromaschinenbauer und kein IT-Profi =))

  1. yo,

    Wie einigen mittlerweile bekannt sein sollte entwickle ich eine Datenbank zur Archivierung von Wickeldaten.

    oha, was sind den Wickeldaten.....

    steht aber der Suchende jetzt z.B. S 10559 oder 10559 eingibt soll trotzdem der Eintrag S10559 gefunden werden. Gegebenenfalls auch ein paar (2-3) andere.

    tipps für die profisuche habe ich leider nicht, aber einen vorschlag. zum einen würde ich mit hilfe von regulären ausdrücken in php den zu suchenden string so bearbeiten, dass die sonderzeichen wegfallen, also nur noch alphanumerische zeichen zulassen. eventuell müsste man auf der datenbankseite das gleiche tun, je nachdem, wie die daten gespeichert sind. zum anderen kannst du das LIKE so erweitern, dass auch das % zeichen vorne steht. dann werden aber eventuell vorhandene indexe ausgehebelt und die abfrage kann länger dauern.

    wa dein chef betrifft, drängel doch mal zurück, man muss sich ja nicht immer alles gefallen lassen.....

    Ilja

    1. yo,

      oha, was sind den Wickeldaten.....

      -> Daten zur Neuwicklung von Statoren ( Elektromotor )

      zum anderen kannst du das LIKE so erweitern, dass auch das % zeichen vorne steht.

      Ich habe das mal ohne deinen Tipp da mit rein geschrieben. Nach 1,5 stündigem Test das Ergebnis:

      Zitat vom Meister:

      "Kann man so lassen!"

      trotzdem Danke^^

      1. yo,

        Ich habe das mal ohne deinen Tipp da mit rein geschrieben. Nach 1,5 stündigem Test das Ergebnis:

        Zitat vom Meister:

        "Kann man so lassen!"

        das nenne ich mal performance, so wie in den guten alten zeiten.... scheinen also recht grosse tabellen zu sein. aber 1,5 stunden wundert mich trotzdem, wie gross ist den deine tabelle(n) und wie genau sieht denie abfrage aus, welche indexe liegen drauf, etc ?

        Ilja

        1. aber 1,5 stunden wundert mich trotzdem

          Die Abfrage hat ja nicht 1,5 Stunden gedauert ...

          Das Testen mit ständig neuen Abfragen, anderen Suchanfragen, und, und, und habe ich so lange gemacht bis ich der Meinung war das es einigermaßen läuft =))

          1. Hallo,

            Die Abfrage hat ja nicht 1,5 Stunden gedauert ...

            Das Testen mit ständig neuen Abfragen, anderen Suchanfragen, und, und, und habe ich so lange gemacht bis ich der Meinung war das es einigermaßen läuft =))

            ich empfehle einen Grundkurs in SQL, in Deinem Fall speziell in T-SQL, dem SQL-Dialekt des MS SQL-Server.

            Freundliche Grüße

            Vinzenz