2011-09-26 54 views
0

我使用的是布爾模式的全文搜索:如何切斷全文(布爾模式)搜索的結果?

SELECT *, match(Tournament.Name) against ('query' in boolean mode) as score FROM `tournaments` AS `Tournament` WHERE 1 =1 ORDER BY `score` desc LIMIT 20 

我想要做的是改變where子句中包含類似score > 0.5,但扔了約比分是未知列的錯誤。

有沒有辦法解決這個問題?或者我的方法有缺陷?


編輯:例如,假設我尋找 「奶酪」,我得到如下結果:

  • 奶酪是偉大
  • 我愛奶酪
  • 奶酪FTW
  • 蛋糕也不錯
  • 任何人喝杯茶?

查詢已成功地將匹配排序到頂部(他們有很好的分數),但其他分數(分數爲0)留在結果集中。我想過濾掉這些低分的結果。

回答

0

Rick James answered這個在MySQL開發論壇上。

他寫道:

「分數」 的得來,所以它不能在WHERE。使用具有代替 在這種情況下

SELECT ... AS score 
FROM ... 
WHERE ... 
HAVING score > 0.5 
ORDER BY score DESC 
-1

我建議你看看基本的mysql functions,從字符串中提取子字符串並將它們轉換爲數字。你可以在你的子句中使用它們,並將結果比較爲0.5

+0

哪裏我不知道如何做到這一點幫助。要清楚的是,搜索已經開始,我只是想阻止它返回不匹配。 –

+0

@tom,好吧我還沒有理解你的問題,然後:如果搜索工作,你爲什麼需要停止返回,然後不匹配?不返回的東西是你期望從搜索是不是? – mb14

+0

看到我閃亮的新例子 –