| pl_90 |
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
Eine Frage...
Wieso geht diese Abfrage: SELECT * FROM tabelle WHERE MATCH(spalte_1, spalte_2) AGAINST ('suchbegriff' IN BOOLEAN MODE); ... aber diese nicht? SELECT * FROM tabelle WHERE MATCH(spalte_1, spalte_2) AGAINST ('suchbegriff'); hab mal sogar so getestet wie bei MySQL http://dev.mysql.com/doc/refman/5.1/de/fulltext-search.html beschrieben ist, aber geht irgendwie nicht... Fulltext ist also da.. aber kein Plan was los ist... Server Version: 5.0.32-Debian_7etch5-log MySQL-Client-Version: 5.0.32 phpMyAdmin - 2.9.1.1-Debian-6 kann bitte mir jemand helfen? Danke schön im Voraus. -------------------- heYeah! webkatalog << NEU
|
![]() |
| Lenny |
#2 Geschrieben am: Sa 24.05.2008, 18:37 (+00:38)
|
||
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 158 Mitglied seit: 20.02.2004 |
Die Abfrage sollte nach meiner Meinung schon gehen. Ich vermute bei dir liegt der Fehler woanders. Hast du schon mit mysql_error() oder mysql_errno() (siehe PHP Manual: mysql_error()...) versucht, um nähere Angaben des Fehlers zu erhalten? -------------------- |
||
![]() |
| connectR |
#3 Geschrieben am: Sa 24.05.2008, 18:52 (+00:14)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 86 Mitglied seit: 29.01.2008 |
Könnte es sein das deine zweite Abfrage einfach die 50-Grenze überschreitet?
Wenn jedes Wort im Text in mindestens 50 Prozent aller Datensätze auftaucht, liefert die Abfrage kein Ergebnis. Die Boolesche-Suche verwendet diese 50%-Marke nicht und liefert entsprechend auch Ergebnisse. -------------------- |
![]() |
| Lenny |
#4 Geschrieben am: Sa 24.05.2008, 18:55 (+00:02)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 158 Mitglied seit: 20.02.2004 |
Zur Ergänzung:
Eventuell fehlt bei dir ein FULLTEXT KEY Index für die Spalte spalte_1 und spalte_2. -------------------- |
![]() |
| pl_90 |
#5 Geschrieben am: Sa 24.05.2008, 20:00 (+01:05)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
ja, hab alles versucht... also liefert keine Ergebnisse und keine Fehler...
die 50 % Grenze weiß nicht genau, ich glaube nicht, da ich ca. 15000 verschiedene Einträge habe... aber ich habe gerade eben festgestellt, dass die Abfrage geht, wenn man nur eine Spalte verwendet, also so: SELECT * FROM tabelle WHERE MATCH(spalte_1) AGAINST ('suchbegriff'); und das geht dann nicht: SELECT * FROM tabelle WHERE MATCH(spalte_1, spalte_2) AGAINST ('suchbegriff'); woran kann das eigentlich liegen? das ist irgendwie voll komisch... hm... -------------------- heYeah! webkatalog << NEU
|
![]() |
| connectR |
#6 Geschrieben am: Sa 24.05.2008, 20:08 (+00:07)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 86 Mitglied seit: 29.01.2008 |
Poste uns doch am Besten mal die komplette Struktur der Tabelle wie sie im Moment aussieht ;-)
-------------------- |
![]() |
| pl_90 |
#7 Geschrieben am: Sa 24.05.2008, 21:04 (+00:56)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
ok.. so sieht das ding aus
CREATE TABLE `DAW_DATAS` ( `ID` int(11) NOT NULL auto_increment, `TOKEN` varchar(50) NOT NULL, `EROTIK` tinyint(4) NOT NULL default '0', `TITEL` varchar(255) NOT NULL, `KEYWORDS` varchar(255) NOT NULL, `TEXT` longtext NOT NULL, `META_TEXT` varchar(255) NOT NULL, `WTAGS` tinytext NOT NULL, `URL` varchar(255) NOT NULL, `DATUM` varchar(20) default NULL, PRIMARY KEY (`ID`), FULLTEXT KEY `TITEL` (`TITEL`), FULLTEXT KEY `TEXT` (`TEXT`), FULLTEXT KEY `META_TEXT` (`META_TEXT`), FULLTEXT KEY `WTAGS` (`WTAGS`), FULLTEXT KEY `URL` (`URL`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -------------------- heYeah! webkatalog << NEU
|
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#8 Geschrieben am: Sa 24.05.2008, 21:12 (+00:07)
|
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2308 Mitglied seit: 4.02.2006 |
TEXT ist ein allgemeines Sql-Schlüsselwort.
Es ist nie eine gute Idee, Schlüsselwörter für Spaltennamen zu verwenden. Das müßte man normalerweise maskieren. Ändere den Spaltennamen mal ab (nur nicht auf ntext - das ist auch ein Schlüsselwort). -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - die Datenbank funktioniert. |
![]() |
| pl_90 |
#9 Geschrieben am: Sa 24.05.2008, 21:20 (+00:08)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
hab auf BODY_TEXT geändert.. trotzdem geht nicht wenn ich zwei spalten angebe (wie oben #5)... hm...
-------------------- heYeah! webkatalog << NEU
|
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#10 Geschrieben am: Sa 24.05.2008, 21:32 (+00:11)
|
||
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2308 Mitglied seit: 4.02.2006 |
Jetzt habe ich mal in der mySql-Hilfe nachgesehen (ich verwende das ja sonst nicht):
Du hast oben nur Indices für Einzelspalten definiert. Also kann das (ohne BOOELEAN MODE) auch nur für Einzelspalten funktionieren, nicht für zwei Spalten. Erstelle einen zusätzlichen Index für zwei Spalten. PS: Lenny hat das oben (#4) bereits geschrieben. -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - die Datenbank funktioniert. |
||
![]() |
| pl_90 |
#11 Geschrieben am: Sa 24.05.2008, 21:37 (+00:05)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
Hab ich doch eigentlich:
CREATE TABLE `DAW_DATAS` ( `ID` int(11) NOT NULL auto_increment, `TOKEN` varchar(50) NOT NULL, `EROTIK` tinyint(4) NOT NULL default '0', `TITEL` varchar(255) NOT NULL, `KEYWORDS` varchar(255) NOT NULL, `TEXT` longtext NOT NULL, `META_TEXT` varchar(255) NOT NULL, `WTAGS` tinytext NOT NULL, `URL` varchar(255) NOT NULL, `DATUM` varchar(20) default NULL, PRIMARY KEY (`ID`), FULLTEXT KEY `TITEL` (`TITEL`), FULLTEXT KEY `BODY_TEXT` (`BODY_TEXT`), FULLTEXT KEY `META_TEXT` (`META_TEXT`), FULLTEXT KEY `WTAGS` (`WTAGS`), FULLTEXT KEY `URL` (`URL`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -------------------- heYeah! webkatalog << NEU
|
![]() |
| Maik power-labels AG |
#12 Geschrieben am: Sa 24.05.2008, 23:13 (+01:36)
|
||
![]() AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 480 Mitglied seit: 16.03.2006 |
Ich glaube Lenny und jAuer meinen einen Mehrfeld-Index, wie zB. sowas:
Du musst halt wissen für welche Felder du Mehrfeld Fulltext Abfragen machen willst, und dafür eigenen Index anlegen. Evtl. solltest du die Struktur mal überdenken, du hast da momentan schon soviele Fulltext-Indizes, das kann nicht gut sein. Ein Insert dauert da bei 15000 vorhandenen Datensätzen bestimmt schon Sekunden... -------------------- |
||
![]() |
| pl_90 |
#13 Geschrieben am: So 25.05.2008, 13:36 (+14:22)
|
||||
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
eigentlich nicht... geht ganz schnell... ich versuche gleich dieses mehrfaches, aber eigentlich hab ich so etwas ähnliches gemacht.... CREATE TABLE ... (... FULLTEXT (TITEL,BODY_TEXT)) aber mysql hat selber "weiter gemacht" also den oberen code erzeugt.. hm... ich versuche nochmal... -------------------- heYeah! webkatalog << NEU
|
||||
![]() |
| pl_90 |
#14 Geschrieben am: So 25.05.2008, 14:04 (+00:27)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
so... danke leute... jetzt gehts... also das mit dem mehrfachen index hat schon mal geklappt.. so sieht jetzt das ganze aus:
CREATE TABLE `DAW_DATAS` ( `ID` int(11) NOT NULL auto_increment, `TOKEN` varchar(50) NOT NULL, `EROTIK` tinyint(4) NOT NULL default '0', `TITEL` varchar(255) NOT NULL, `KEYWORDS` varchar(255) NOT NULL, `BODY_TEXT` longtext NOT NULL, `META_TEXT` varchar(255) NOT NULL, `WTAGS` tinytext NOT NULL, `URL` varchar(255) NOT NULL, `DATUM` varchar(20) default NULL, PRIMARY KEY (`ID`), FULLTEXT KEY `BODY_TEXT` (`BODY_TEXT`), FULLTEXT KEY `TWTU` (`TITEL`,`WTAGS`,`URL`), FULLTEXT KEY `META_TEXT` (`META_TEXT`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; und meine jetzige Abfrage so: SELECT *, MATCH (TITEL,WTAGS,URL) AGAINST ('suchbegriff') AS SCORE FROM DAW_DATAS WHERE MATCH (TITEL,META_TEXT,URL) AGAINST ('suchbegriff' IN BOOLEAN MODE) ORDER BY SCORE DESC LIMIT XX,YY das geht wie gesagt, aber wenn daran etwas falsch ist, sagt bitte bescheid.. weiß noch jemand zufällig, wie man Relevanz mit php berechnet? weil SCORE bei dieser Abfrage ist die Relevanz, jedoch wird z.B. 6.545985649 ausgegeben, ich möchte aber für den Besucher in % 0-100% anzeigen... weiß jemand wie das geht? danke schön.. -------------------- heYeah! webkatalog << NEU
|
![]() |
| Lenny |
#15 Geschrieben am: So 25.05.2008, 17:36 (+03:32)
|
||
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 158 Mitglied seit: 20.02.2004 |
Du kannst das Problem wie folgt lösen: 1) Ermittle in der Ergebnismenge die maximale Relevanz. Diese speicherst du in einer Variable z.B. $rMaxScore ab. 2) Für jeden Datensatz (in der Ergebnismenge) kannst du den Prozentsatz wie folgt berechnen: 100 * ($rScore / $rMaxScore) = ... [%], wobei $rScore die Relevanz des Datensatzes ist. -------------------- |
||
![]() |
| pl_90 |
#16 Geschrieben am: So 25.05.2008, 19:07 (+01:31)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
achso.. danke.. nur wie soll ich die maximale Relevanz ($rMaxScore) ermitteln?
-------------------- heYeah! webkatalog << NEU
|
![]() |
| Lenny |
#17 Geschrieben am: So 25.05.2008, 19:33 (+00:26)
|
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 158 Mitglied seit: 20.02.2004 |
Ganz einfach: Du fügst in deiner Abfrage eine absteigende Sortierung nach Relevanz hinzu. Die Relevanz der ersten Datensatz ist somit die maximale Relevanz (entspricht 100%) in der Ergebnismenge, diese kannst du separat in einer Variable abspeichern....
-------------------- |
![]() |
| pl_90 |
#18 Geschrieben am: So 25.05.2008, 19:46 (+00:12)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
achso.. hehe... danke vielmals für alles an alle..
-------------------- heYeah! webkatalog << NEU
|
![]() |
| pl_90 |
#19 Geschrieben am: Mo 26.05.2008, 13:37 (+17:50)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 236 Mitglied seit: 29.03.2007 |
em.. sorry iregendwie check ich das doch nicht... kommt nur scheiße bei mir raus...
kann mir jemand bitte ein beispiel schreiben? vielen danke im voraus... -------------------- heYeah! webkatalog << NEU
|
![]() |
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
« HTML-Link ohne Ziel | Programmierung Allgemein | Ich will IT-Applikationsentwickler werden aber wie »
Trackback-Url: http://www.ayom.com/track/t/24568
![]() |
![]() ![]() ![]() |
| Themen Titel | Autor | Views | Antworten | Letzte Aktion |
| Suche Freelancer: Ajax, XML, PHP, MySQL | omc | 155 | 2 | Mo 6.10.2008, 20:14 |
| Zielgruppe versteht Webseite nicht | Martin J | 273 | 7 | Mi 1.10.2008, 11:40 |
| Lösung für: Content Slider-Java Script-PHP-MySql | Antoine Johannes | 130 | 2 | Fr 26.09.2008, 12:54 |
| onload submit geht nicht | Sancheck | 178 | 6 | So 21.09.2008, 18:31 |
| PHP + MySQL 2 Fragen an euch | Coach | 152 | 1 | Do 18.09.2008, 10:52 |
| Erscheine nicht in google | superbobbes | 359 | 16 | Mi 17.09.2008, 18:37 |
| layer-ref geht in die BetaPhase | Tripolis | 195 | 3 | Mo 15.09.2008, 16:15 |
| PHP und MySQL Probleme | Swisstiger | 501 | 4 | So 14.09.2008, 22:23 |
Anzeige - [Interessiert an einer Anzeige?]















