I'm using a boolean mode full-text search:
SELECT *, match(Tournament.Name) against ('query' in boolean mode) as score FROM `tournaments` AS `Tournament` WHERE 1 =1 ORDER BY `score` desc LIMIT 20
What I wanted to do was to change the where
clause to contain something li开发者_运维百科ke score > 0.5
, but this threw an error about score being an unknown column.
Is there a way around this? Or is my method flawed?
EDIT: For example, say I search for "cheese", I get the following results:
- Cheese is great
- I love cheese
- Cheese ftw
- Cake is nice too
- Anyone for a cuppa?
The query has successfully sorted the matches to the top (they have good scores), but the others (with scores of 0) are left in the result set. I want to filter out these low scoring results.
Rick James answered this over at the MySQL dev forums.
He wrote:
"score" is derived, so it cannot be in WHERE. Use HAVING instead of WHERE in this situation
SELECT ... AS score
FROM ...
WHERE ...
HAVING score > 0.5
ORDER BY score DESC
I suggest you have a look at the basic mysql functions, to extract substrings from strings and convert them into a number. You can use them in you were clause and compare the result to 0.5
精彩评论