2012-06-30 60 views
0

我正試圖優化我的網站上的搜索引擎。當前填充結果的mySQL查詢「可以」,但實際上並不是那麼好。例如,這些查詢永遠不會被用作搜索結果:「A & M」,「E.S.Y.」,「DVS」,雖然它們是數據庫的一部分並存儲在「名稱」列中。像「Exist」或「Hollywood Designs」這樣的搜索查詢按預期發現。MATCH AGAINST mysql查詢不按預期方式工作

我想知道是否有一種方法來解決以下查詢,所以它更準確地填充結果,B/C現在它是遺漏了很多結果,並沒有按預期工作。我感謝任何幫助。

這是當前的查詢我使用的填充搜索結果:

$結果=請求mysql_query( 「選擇關鍵字,名字從文件WHERE MATCH(關鍵字,名稱)AGAINST( '$ searchfor')」)或死亡(mysql_error());

+1

你可能要考慮使用全文搜索服務器來代替MySQL,因爲MySQL的FULLTEXT搜索並不好。我建議獅身人面像。 http://sphinxsearch.com/ –

回答

0

我認爲你的問題與默認情況下mysql的字長限制有關。例如A&M不是一個字,而是兩個(&被忽略)。通常這個限制(ft_min_word_len)設置爲3.

在這個mysql手冊中,你可以看到,你如何調整配置。設置ft_min_word_len一個: http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

重要旁註:

  • 你必須重新索引你的全文索引,否則你的搜索將不會改變。
  • 如果您使用大量數據集,請注意,此更改可能會顯着降低全文查詢的速度。