Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 10.11.2004 23:09
Titel MySQL Volltextsuche |
|
|
N'abend!
Versuche hier gerade mal eine kleine Suchfunktion in PHP zu schreiben, leider funktioniert das nicht so wie ich es mir vorstelle. Habe den Verdacht das das mit der Bedingung in der Schleife zusammenhängt, aber vielleicht sieht jemand von Euch den Fehler...
MySQL:
Code: |
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`headline` text NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `headline` (`headline`,`text`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
INSERT INTO `test` VALUES (1, 'Dies ist der kleine Titel', 'Die Funktion MATCH prüft eine natürlichsprachige Anfrage gegen (AGAINST) eine Textsammlung (einfach ein Satz von Spalten, der vom FULLTEXT-Index abgedeckt wird).');
|
Und hier das Script:
Code: |
<?php
$suchbegriff="Spalten";
$sql="SELECT * FROM test WHERE MATCH (headline,text) AGAINST ('$suchbegriff')";
$connection=mysql_connect($server,$user_db,$password_db);
mysql_select_db($name_db,$connection);
$result=mysql_query($sql,$connection);
if(!$result) echo MySQL_error();
else echo "Ok";
while($row=mysql_fetch_object($result)){
echo $row->id;
}
mysql_free_result($result);
mysql_close($connection);
?>
|
Das Ok gibt er auch aus aber mehr auch nicht! Kann jemand helfen?
gruß
marcusm
|
|
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 10.11.2004 23:13
Titel
|
|
|
was sagt denn mysql_num_rows() ? und was sagt print_r( $row );
wenn's in der Schleife platziert wird?
|
|
|
|
|
Anzeige
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Mi 10.11.2004 23:15
Titel Re: MySQL Volltextsuche |
|
|
marcusm hat geschrieben: | N'abend!
Versuche hier gerade mal eine kleine Suchfunktion in PHP zu schreiben, leider funktioniert das nicht so wie ich es mir vorstelle. Habe den Verdacht das das mit der Bedingung in der Schleife zusammenhängt, aber vielleicht sieht jemand von Euch den Fehler...
MySQL:
Code: |
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`headline` text NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `headline` (`headline`,`text`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
INSERT INTO `test` VALUES (1, 'Dies ist der kleine Titel', 'Die Funktion MATCH prüft eine natürlichsprachige Anfrage gegen (AGAINST) eine Textsammlung (einfach ein Satz von Spalten, der vom FULLTEXT-Index abgedeckt wird).');
|
Und hier das Script:
Code: |
<?php
$suchbegriff="Spalten";
$sql="SELECT * FROM test WHERE MATCH (headline,text) AGAINST ('$suchbegriff')";
$connection=mysql_connect($server,$user_db,$password_db);
mysql_select_db($name_db,$connection);
$result=mysql_query($sql,$connection);
if(!$result) echo MySQL_error();
else echo "Ok";
while($row=mysql_fetch_object($result)){
echo $row->id;
}
mysql_free_result($result);
mysql_close($connection);
?>
|
Das Ok gibt er auch aus aber mehr auch nicht! Kann jemand helfen?
gruß
marcusm |
echo $row["id"];
bitte ändern, dann sollte es gehen
|
|
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 10.11.2004 23:17
Titel
|
|
|
Also mysql_num_rows() gibt mir ne 0 aus...
|
|
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 10.11.2004 23:20
Titel
|
|
|
Nope!
"print_r" gibt nichts aus und mit "echo $row["id"]" sagt er auch keinen Ton...???
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 10.11.2004 23:34
Titel
|
|
|
marcusm hat geschrieben: | Also mysql_num_rows() gibt mir ne 0 aus... |
ja, damit hab ich auch angefangen zu testen... aber das ergebnis war ja valide. primus, erst lesen, dann tippen: mysql_fetch_object
Ich bin erstaunt... könnte es daran liegen?:
Zitat: | Such a technique works best with large collections (in fact, it was carefully tuned this way). For very small tables, word distribution does not adequately reflect their semantic value, and this model may sometimes produce bizarre results. For example, although the word ``MySQL'' is present in every row of the articles table, a search for the word produces no results:
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('MySQL');
Empty set (0.00 sec)
The search result is empty because the word ``MySQL'' is present in at least 50% of the rows. As such, it is effectively treated as a stopword. For large datasets, this is the most desirable behavior--a natural language query should not return every second row from a 1GB table. For small datasets, it may be less desirable. |
//
Haha, liegt es! Füge noch ein paar Reihen ein, und dann versuch nochmal
Zuletzt bearbeitet von am Mi 10.11.2004 23:39, insgesamt 2-mal bearbeitet
|
|
|
|
|
marcusm
Threadersteller
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Mi 10.11.2004 23:40
Titel
|
|
|
@ Schinken
Mehr Einträge in die Db oder mehr Text in diesen Eintrag?
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Mi 10.11.2004 23:43
Titel
|
|
|
Füge mal für vernünftige Ergebnisse 100 Einträge ein, da hab ich auch schon mal nen halben Tag drüber gegrübelt
|
|
|
|
|
|
|
|
Ähnliche Themen |
MySQL - Boolsche Volltextsuche
[PHP / MySql] Volltextsuche haut igrndwie nich hin!
Volltextsuche mit Relevanz
Volltextsuche geht nicht ?
Volltextsuche für blätterbaren Katalog gesucht
[php] Viele PDF auslesen und über Volltextsuche durchsuchen
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|