100 search items is a lot to search on at once for any system. MySQL has to search on a 100 terms, no way around that. I think the only way to optimize your query is to narrow down the search terms. Perhaps you can search on phrases instead of words?

After the first 5-10 terms have been matched the rest of the terms being searched on are probably only eliminating a record or two, if any at all. So the relevance of the later terms are pretty minimal. If there are certain search terms that are used all the time, you may want create categories and pre-assign articles to those categories. Then you can search on categories and full text.

Regardless, the problem is the number of terms you are searching on. It's like trying to find 100 names in a phone book. It would take you a long time even though it's in alphabetical order.


On Aug 31, 2005, at 7:10 AM, Andrew Brosnan wrote:

Hello,

I need some help optimizing a query. The current query is as follows:

  SELECT *,
  MATCH(title) AGAINST ( 'S' IN BOOLEAN MODE ) AS score
  FROM articles
  WHERE MATCH(title) AGAINST ( 'S' IN BOOLEAN MODE );


'title' is a FULLTEXT index.
'S' is a query string that may have 100 search terms.
'articles' table has about 100,000 records.

The query runs OK (< 0.1 sec) as long as 'S' is small (< 5 terms), but
as the number of terms increase, it bogs down big-time.

EXPLAIN says:
*************************** 1. row ***************************
        table: articles
         type: fulltext
possible_keys: art_ft
          key: art_ft
      key_len: 0
          ref:
         rows: 1
        Extra: Using where
1 row in set (0.00 sec)

Any suggestions?

Regards,
Andrew

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql? [EMAIL PROTECTED]




--
Brent Baisley
Systems Architect
Landover Associates, Inc.
Search & Advisory Services for Advanced Technology Environments
p: 212.759.6400/800.759.0577



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to