2016-09-13 53 views
1

我們正在尋找MySQL查詢其提供準確結果查詢like '%%'但使用全文搜索MATCH AGAINST相似到MySQL像「%%」查詢

例如全文搜索結果

Select id,name from table where jobtitle like '%java software engineer in google%' 

它給所有在google中包含行java軟件工程師的行

但是如果我們用下面的mysql查詢,那麼它會給出不同的結果

Select id,name from table 
where MATCH(jobtitle) AGAINST ('+java software engineer in google' IN BOOLEAN MODE) 

它給出包含任何單詞在谷歌

Java軟件工程師,我想這來自於使用像查詢「在谷歌%% Java軟件工程師」的確切輸出行。

回答

0

Boolean fulltext search MySQL文檔顯示(粗體是我的):

的布爾全文搜索功能支持以下 運營商:[...]

一包含在雙引號(「」「)字符中的短語僅匹配 只包含字面意義的短語,因爲它是鍵入的。全文引擎將該短語拆分爲單詞並在 中搜索單詞的FULLTEXT索引。 非字詞字符不必是 完全匹配:短語搜索只需要匹配包含 與短語完全相同的單詞並按相同的順序。對於 示例,「測試短語」匹配「測試,短語」。

如果短語不包含索引中的詞,則結果爲 爲空。由於 因素的組合,這些詞可能不在索引中: 因素:如果它們不存在於文本中,是停用詞,或者是短於索引詞的最小長度的 。

因此,使用"操作:

Select id,name from table 
where MATCH(jobtitle) AGAINST ('"java software engineer in google"' IN BOOLEAN MODE) 

加粗部分包含警告:結果可能是因爲全文索引的性質略有不同。

+0

您的查詢顯示無結果。沒有找到行,甚至有行,其中包含確切的線路java軟件工程師在谷歌。在數據庫中的行是谷歌德里的java軟件工程師的工作 –

+0

單詞「in」可能短於最小單詞長度,因此全文索引找不到它,因此它不返回任何記錄。查看更新的答案。增加的部分是鏈接MySQL手冊中的下一段... – Shadow

+0

ido不明白。我想匹配查詢來搜索這一行java軟件工程師在谷歌任何地方進來行 –