Я использую простой запрос mysql LIKE, подобный этому:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2
У меня есть полнотекстовый индекс по «полю», и все же он очень медленный.
Я понял, что есть возможность использовать матч. В чем разница? Как? Каков наилучший подход для моего использования?
Обратите внимание, что я использую «%» для всего, что начинается с «aaa»
UPDATE:
В итоге я использовал что-то вроде этого:
SELECT<br>
*, MATCH (name) AGAINST ('a*' IN BOOLEAN MODE) AS SCORE<br>
FROM<br>
users
WHERE<br>
MATCH (name) AGAINST ('a*' IN BOOLEAN MODE)<br>
ORDER BY SCORE, popularity DESC LIMIT 4
Одна вещь, которую я хотел бы изменить, это не из-за порядка сначала по SCORE, а затем по популярности моего поля, а вместо этого по простой функции веса, что-то вроде 0,5 * SCORE + 0,5 * популярности. Как?