2012-03-18 32 views
2

有沒有人知道如何縮小MySQL布爾值匹配/反對搜索結果只檢索那些包含的記錄至少有2個輸入字?MySQL布爾搜索 - 如何篩選出所有不包含至少2個輸入字符串的結果?

這是查詢:

SELECT it_title, en_title, genre, author, year, place, movie_id, url, place_it 
     . FROM movies, locations, sets 
     . WHERE MATCH (movies.it_title) AGAINST('$loc' IN BOOLEAN MODE) 

我想只檢索誰擁有的類型的話,至少2場比賽,讓我們說:

  • 如果用戶類型:「午夜」我'想避免「巴黎午夜」
  • 如果用戶鍵入:「午夜在」,那麼我想顯示它。

乾杯, 伊利莎

回答

0

在你的情況,如果你使用PHP做出如果與str_word_count聲明($ LOC)> = 2

這只是計數$祿字,例如就是我在this site上找到的關於多個詞匹配的搜索。

經過一番研究,我發現如果你想搜索多個關鍵字,你可以在每個單詞之間添加空格。因此,如果我想在表格上對文字「蘋果,汽車零部件和服裝」進行全文搜索,那麼我會這樣寫。

1

這可能是在你的榜樣棘手。 MySQL的全文搜索具有最小的字長(默認爲4),因此默認情況下,「in」不會被索引。 「in」也是默認停用詞之一,因此默認情況下也不會被索引。另外一個單一的電影名稱呢?自然語言搜索是一個衆所周知的難題(谷歌已經花了數年的時間讓他們的算法正確)。我建議不要創建自己的算法。

爲什麼不只是使用MySQL的自然語言搜索(而不是布爾)。您可以將結果限制在前X個結果中,或者可能將結果限制爲大於X的所有結果,並提供用戶再次搜索/查看所有結果等選項。

相關問題