1

MATCH/AGAINSTプロシージャを実装している、MySQL の MyISAM テーブルで単純な検索インターフェイスに取り組んでいます。

一見問題なく動作しているように見えますが、さらに調べてみると、行の長さが短い傾向にあるようです。これは、一致する単語の割合が高いため、与えられるスコアが高くなければならないためだと想像できます。

これは、私が使用している MySQL データベースへのクエリです。結果は、下のスクリーンショットのアプリケーションからのものです。

SELECT 
            report, 
            status,
            GROUP_CONCAT(DISTINCT status) AS statuses, 
            GROUP_CONCAT(DISTINCT docID) AS docIDs, 
            GROUP_CONCAT(DISTINCT analyst) AS analysts, 
            GROUP_CONCAT(DISTINCT region) AS regions, 
            GROUP_CONCAT(DISTINCT country) AS countries, 
            GROUP_CONCAT(DISTINCT topic) AS topics, 
            GROUP_CONCAT(DISTINCT date) AS dates, 
            MAX(date) AS date,
            MIN(date) AS mindate,
            MAX(docID) AS docID, 
            GROUP_CONCAT(DISTINCT event) AS events, 
            GROUP_CONCAT(DISTINCT rule) AS rules, 
            GROUP_CONCAT(DISTINCT link SEPARATOR ' ') AS links, 
            GROUP_CONCAT(DISTINCT province) AS provinces,
            MATCH (
                region, country, province, topic, event
            )
            AGAINST (
                'toxic china'
            ) AS score
            FROM search_reports
            GROUP BY report
            ORDER BY score DESC

簡単にするために、AGAINSTこの問題を解決している間、定数として を残しました。現在、「有毒な中国」のみを検索するように設定されています。したがって、中国を含まない結果が、その特定の検索キーワードを含む結果よりも上位にランク付けされることは予想外です。

の検索結果

4

1 に答える 1

1

次のように IN BOOLEAN MODE を試してみてください。

AGAINST (
        'toxic china' IN BOOLEAN MODE
)

これは、用語の真/偽の一致である必要があるためです

于 2011-12-07T22:30:00.550 に答える