Is there a more efficient way of using a match score in MySQL full text search? SELECT i.*, MATCH(i.description, i.keywords) AGAINST ("searchterm") AS score 
        FROM items AS i
        WHERE i.instock=1
        AND MATCH(i.description, i.keywords) AGAINST("searchterm") 
    ORDER BY score DESC  LIMIT 0, 80


I'm wondering if there is a way to write the query so that the match operation is not preformed twice?
Actually the operation is not performed twice. See the manual:


  The following example is more complex. The query returns the relevance
  values and it also sorts the rows in order of decreasing relevance. To
  achieve this result, specify MATCH() twice: once in the SELECT list
  and once in the WHERE clause. This causes no additional overhead,
  because the MySQL optimizer notices that the two MATCH() calls are
  identical and invokes the full-text search code only once.

mysql&gt; SELECT id, body, MATCH (title,body) AGAINST
    -&gt; ('Security implications of running MySQL as root') AS score
    -&gt; FROM articles WHERE MATCH (title,body) AGAINST
    -&gt; ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body                                | score           |
+----+-------------------------------------+-----------------+
|  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
|  6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)



Update

Notice that you do not need to sort explicitly though:


  When MATCH() is used in a WHERE clause, as in the example shown earlier, the rows returned are automatically sorted with the highest relevance first.


If you do it anyway, the optimizer will not notice that it is unnecessary and will sort again using filesort, which would add overhead.