2016-04-08 15 views
1

私はジョブのDBを検索するMySQLクエリを実行しています。私は結果を関連性のあるものにするためにMATCHとAGAINSTを使用しています。 しかし私は、これら2つのクエリは異なる結果を返す理由として困惑している:これら2つのMySQLクエリが異なる結果を返すのはなぜですか

私は自然言語モードをデフォルトとします理解し
SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`) 
      AGAINST ("assistant") 
      AS Relevance 
      FROM jobs2 
      WHERE MATCH (`title`) 
      AGAINST ("assistant") AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50 

、しかし一方で、0の結果を返します。

SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`) 
      AGAINST ("assistant" IN BOOLEAN MODE) 
      AS Relevance 
      FROM jobs2 
      WHERE MATCH (`title`) 
      AGAINST ("assistant" IN BOOLEAN MODE) AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50 

リターン4結果は期待どおりですが、関連性は常に1であるため、関連性による注文は実際には可能ではありませんか?

私のDBは、テストのためにこれらのジョブを持っています

|date    |title               |jobref| 

|2016-04-08 07:21:19|Assistant Management Accountant        |12345 | 
|2016-04-08 07:21:19|Assistant Accountant           |12346 | 
|2016-04-08 07:19:15|Assistant Finance Manager          |12347 | 
|2016-04-08 07:20:38|Accounts Assistant/Purchase Ledger Clerk/Accounts Payable |12348 | 

基本的には、なぜ0結果を返す自然言語モードがありますか?

答えて

4

自然言語検索のためのMySQLのドキュメントから:また

、行の50%以上に存在している単語が 共通とみなされ、一致していません。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

あなたのサンプルデータがその50%の一致率を超えたように見えます。

+0

ああありがとう - 私はこれを回避する方法はないと思いますか? – rpsep2

関連する問題