1

このクエリに何か問題がありますか?これは時々機能し、時には機能しません。たとえば、「seven」という単語ではスコアは返されませんが、少なくとも本文の29行に表示されますが、スコア0として返されます。

言い換えれば、それは問題なく動作しますが、これでは動作しません。誰かが理由を知っているか、関連性によってそれをソートするための別の解決策を持っていますか?

   SELECT *, 
         ( (MATCH(articles.name) AGAINST('seven'))*5 +
           (MATCH(articles.subtitle) AGAINST('seven'))*3 + 
           (MATCH(articles.body) AGAINST('seven'))) AS search_score 
     FROM articles 
LEFT JOIN matches ON articles.match=matches.id 
 ORDER BY search_score DESC

編集:「7」がストップワードであることに気づきました。これを行う他の方法はありますか?ストップワード

4

2 に答える 2

0

問題
単語があまりにも一般的である場合、つまり 50% 以上の行で発生する場合、MySQL はそれをストップ ワードと見なし、一致しません。
次に、ストップワードのリストがあります (既にお気付きです)
http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html

解決策
この回答: mysql フルテキスト ストップワード リストをどこで編集しますか?
デフォルトのストップ ワード リストをオーバーライド/置換する方法を説明します。

MySQL ドキュメント ページへのリンクは次のとおりです: http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

于 2011-05-06T19:21:07.713 に答える
0

各スコアの周りに COALESCE(value,0) を追加します。

于 2011-05-06T18:54:49.850 に答える