Boolean Fulltext Suche mit Anführungszeichen zu langsam

Boolean Fulltext Suche mit Anführungszeichen zu langsam

am 25.06.2006 22:16:01 von malte

Guten Tag.

Bei unserer momentanen Datenbank mit über 20k Einträgen haben wir das Problem,
dass die Suche im Boolean Modus mit Anführungszeichen viel viel länger dauert als ohne.


mysql> SELECT COUNT(*) FROM `Pages` WHERE MATCH (`Text`) AGAINST ('"term"' IN BOOLEAN MODE);
+----------+
| COUNT(*) |
+----------+
| 3572 |
+----------+
1 row in set (6.58 sec)

mysql> SELECT COUNT(*) FROM `Pages` WHERE MATCH (`Text`) AGAINST ('term' IN BOOLEAN MODE);
+----------+
| COUNT(*) |
+----------+
| 3572 |
+----------+
1 row in set (0.13 sec)


CREATE TABLE `Pages` (
`ID` int(11) NOT NULL default '0',
`Title` varchar(255) NOT NULL default '',
`Text` mediumtext NOT NULL,
PRIMARY KEY (`ID`),
FULLTEXT KEY `Text` (`Text`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


mysql> EXPLAIN SELECT COUNT(*) FROM `Pages` WHERE MATCH (`Text`) AGAINST ('term' IN BOOLEAN MODE);
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
| 1 | SIMPLE | Pages | fulltext | Text | Text | 0 | | 1 | Using where |
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
1 row in set (0.01 sec)

mysql> EXPLAIN SELECT COUNT(*) FROM `Pages` WHERE MATCH (`Text`) AGAINST ('"term"' IN BOOLEAN MODE);
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
| 1 | SIMPLE | Pages | fulltext | Text | Text | 0 | | 1 | Using where |
+----+-------------+-------+----------+---------------+----- -+---------+------+------+-------------+
1 row in set (0.01 sec)

Das suchen mit Anführungszeichen ist in diesem Fall zwar nicht notwendig; wir verwendeten dieses Bsp. jedoch als Test,
nachdem wir bemerkt hatten, dass die Suche mit Anführungszeichen in vielen Fällen extremst lange dauert und wir
in diesem Bsp. die möglichkeit hatten, einen Vergleich zwischen den beiden Suchmodis durchzuführen.

Hat jemand von euch vielleicht einen tipp?

Mit besten Grüßen,
Malte