如果title
列不包含任何搜索字詞,那麼您的布爾表達式將爲1
,如果不包含您的搜索字詞,則爲0
。因此,您必須更改asc
至desc
才能在0
之前訂購1
。
但like
不會考慮單詞邊界,所以LIKE '%e%'
是真正爲包含e
任何地方(例如home
)的任意值。這意味着即使你做更改asc
到desc
,至少對於你的示例數據,你仍然會得到一個任意的順序,因爲每一行實際上包含了一個e
,所以你的布爾表達式對於所有的結果。
您可能想要考慮order by (title LIKE '%la%') + (title LIKE '%fontaine%') + (title LIKE '%e%') desc
或類似的東西,所以更多(部分)關鍵字匹配導致更好的位置。否則,添加更多關鍵字可能會使您的訂單變得更糟:按預期搜索"fontaine"
訂單,搜索"fontaine e"
再次沒有訂單。
如果您確實想要尊重單詞邊界,那麼如果您基本上想要執行全文搜索,以優先排列title
列,則可能需要使用實際相關性分數來對結果進行排序。它應該(可能)給你一個更好的順序,而不僅僅是「它包含任何搜索條件」。嘗試
order by MATCH(title)
AGAINST('(+la +fontaine +e) (la fontaine e)' IN BOOLEAN MODE) DESC
或
order by MATCH(title)
AGAINST('(+la +fontaine +e) (la fontaine e)' IN BOOLEAN MODE) DESC,
MATCH(title, title_fr, summary, seo_keyword, seo_description)
AGAINST('(+la +fontaine +e) (la fontaine e)' IN BOOLEAN MODE) DESC
或
order by MATCH(title)
AGAINST('(+la +fontaine +e) (la fontaine e)' IN BOOLEAN MODE) * 5
+ MATCH(title, title_fr, summary, seo_keyword, seo_description)
AGAINST('(+la +fontaine +e) (la fontaine e)' IN BOOLEAN MODE) DESC
這就需要您在title
添加一個單獨的全文索引。
您還應該瞭解全文搜索的限制和選項。例如,索引默認不包含短於3 (for InnoDB)或4 (for MyISAM)的字,因此e
或la
將不包含在索引中,並且找不到。此外,通過stopword list排除一些常見詞(如the
)(對於MyISAM和InnoDB,該停用詞列表的默認內容將顯着不同)。而且,全文索引越慢,查找結果越多。因此,搜索單個罕見單詞的速度非常快,而搜索幾個能夠返回大部分數據的關鍵字的組合(取決於您的表的大小)會變得非常緩慢。
附註:title LIKE '%la fontaine e%'
與查找單詞不同 - 它會找到例如'Isabella Fontaine est'
。並且您的match against
-部分也將包含結果,因爲它包含單詞Fontaine
。雖然這隻適用於搜索超過2個單詞,否則,title LIKE '%la fontaine%'
將找到'Isabella Fontainebleau'
,其中不包含單詞la
或fontaine
。我不確定這是否是您想要或期望的行爲。
現在查詢成爲 SELECT標題 FROM隊 WHERE MATCH(title,title_fr,meta_tags,summary,seo_keyword,seo_description)反對('(+ la + fontaine + eau)(la fontaine eau)'BOOLEAN MODE) 或標題LIKE'%la fontaine eau%' ORDER BY MATCH(title)AGAINST('(+ la + fontaine + eau)(la fontaine eau)'布爾模式)DESC; 但第一行是 - 封丹淡倒Chien等聊天鮮清除Dogit設計 和慾望行從第二到第三 - 拉封丹香水倒聊天等CHIENS維加 - 拉封丹淡Edelvia首頁11L - La fontaineàeau Edelvia Home 11Llivréeàdomicile –
如果我正確理解您的後續行爲:如果您搜索「la fontaine eau」,單詞「la」(也許,如果您使用MyISAM,單詞「eau 「)(默認情況下)被忽略,因爲它比3或4短(我提到在限制部分中,你可能錯過了它;它還包括配置設置的鏈接)。如果您希望它對全文評分有任何影響,則必須更改配置選項*和*,然後重新構建索引。如果那不是你的問題,你必須更多地澄清它,因爲那時我還不明白。 – Solarflare