Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] FULLTEXT Suche automatisieren?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] FULLTEXT Suche automatisieren?

    Hallo

    Ich habe ein Script gebastelt welches die mit Fulltext markierten Felder einer Datenbank zurueckgeben soll. Dies hat auch funktioniert auf einer MySQL Datenbank (Version weiss ich nicht mehr), jedoch auf einem anderen Server ist die Rueckgabe des Scripts leer.
    Hat wer eine Ahnung wieso? Die jetztige MySQL Version ist 4.1.9.

    PHP-Code:
    <?php
        
    function getFulltextKeys($table) {
            include(
    "mysql.cfg.php");                        // Datei mit MySQL Daten
            
    mysql_connect($sql_host$sql_login$sql_passwd);
            
    $query "SHOW INDEX FROM ".$table;
            
    $result mysql_db_query($sql_db$query);
            
    $rows mysql_num_rows($result);
            for(
    $i 0$i $rows$i++){
                if(
    mysql_result($result$i"Comment") == "FULLTEXT") {
                    
    $cols[] = mysql_result($result$i"Column_name");
                }
            }
            return 
    $cols;
        }
    ?>
    Die Tabelle sieht etwa so aus:

    Code:
    	CREATE TABLE irgendwas (
    		ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    		.....
    		shortDescription VARCHAR(100),
    		description TEXT,
    		createDate bigint(20) unsigned DEFAULT '0' NOT NULL,
    		PRIMARY KEY (ID),
    		FULLTEXT KEY `shortDescription` (`shortDescription`),
    		FULLTEXT KEY `description` (`description`)
    	) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
    Waere dankbar um einen Tipp

    Greez


  • #2
    Selbst ist der Meister...
    Habe schliesslich die Lösung selber gefunden:

    PHP-Code:
    <?php
        
    function getFulltextKeys($table) { 
            include(
    "mysql.cfg.php");                  // Datei mit MySQL Daten
            
    mysql_connect($sql_host$sql_login$sql_passwd); 
            
    $query "SHOW INDEX FROM ".$table;
            
    $result mysql_db_query($sql_db$query);
            
    $rows mysql_num_rows($result);
            for(
    $i 0$i $rows$i++){
                if(
    mysql_result($result$i"[b]Index_type[/b]") == "FULLTEXT") {
                    
    $cols[] = mysql_result($result$i"Column_name");
                }
            }
            return 
    $cols;
        }
    ?>
    Leuchtet eingentlich ein, dass die Beschreibungen für einen Index nicht im Comment-Feld zu finden sind, sondern im Index_type-Feld.

    Und die Datenbank sieht dann etwa so aus:

    Code:
    CREATE TABLE irgendwas (
    	ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    	.....
    	shortDescription VARCHAR(100),
    	description TEXT,
    	createDate bigint(20) unsigned DEFAULT '0' NOT NULL,
    	PRIMARY KEY (ID),
    	FULLTEXT KEY `search` (`shortDescription`, `description`)	// geändert
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";

    Wundern tu ich mich nur, dass das obige Script mal funktioniert hat.
    Naja, im Detail liegt ja der Hund begraben o.ä.

    Kommentar

    Lädt...
    X