phpbar.de logo

Mailinglisten-Archive

Volltextsuche mit order by und limit

Volltextsuche mit order by und limit

Jürgen Westhoff j at cmail.de
Mit Aug 31 13:24:30 CEST 2005


Hallo an alle!

Ich grübel hier über ein Problem bei dem ich nicht weiterkomme:

Ich habe folgende Tabelle:

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      |      | PRI | NULL    | auto_increment |
| bar | varchar(250) |      |     |         |                |
| foo | varchar(250) |      | MUL |         |                |
+-------+--------------+------+-----+---------+----------------+

und folgende Query:

select foo, bar, match(foo) against('$query' $bool_mode) as ranking from 
foobar where match(foo) against('$query' $bool_mode) order by ranking desc  
limit 0,1000

Bei einer Eingabe von boolschen Operatoren wird $bool_mode auf 'in boolean 
mode' gesetzt.

Ich habe die Stopwords der Volltextsuche entfernt und die minimale Länge bei 
der Volltextsuche auf ein Zeichen gesetzt, damit auch Wörter wie 'to', 'an' 
o.ä. gefunden werden.

Soviel zum Aufbau - das funktioniert auch ganz gut bis auf eine Kleinigkeit 
bei der ich einfach auf dem Schlauch stehe.

Wenn ich nun nach einem String suche, der ein Wort enthält welches in der 
Tabelle oft vorkommt, dann bekomme ich einfach nicht die relevanten 
Ergebnisse aus der DB, weil das Limit vor dem order by greift.
Wenn ich das Limit entferne, dann wäre es zwar okay, aber die Abfrage dauert 
dann so lange, daß es einen Timeout gibt. Ich möchte also eigentlich alles so 
lassen, allerdings sollen auch bei den Suchbegriffen, die sehr viele Treffer 
erzeugen, die ersten 1000 nach dem MySQL-Ranking sortierten Treffer gezeigt 
werden.

Ich hoffe ich habe mein Problem einigermaßen verständlich rüberbringen können 
und hoffe auf einen Lösungsansatz, der mich mal wieder vom Schlauch 
herunterschubst ;)

Achso, ich setze MySQL 4.0.18 ein, falls das noch wichtig sein sollte.


Vielen Dank und nen lieben Gruß,
Jürgen

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive