0

関連性の高い順にデータベースを検索しようとしています。

次のクエリは両方とも機能しますが、最初のクエリのみが結果を返しません。

IN BOOLEAN MODE を使用してみましたが、title_relevance フィールドと desc_relevance フィールドが 0 または 1 になるだけです。用語が表示されるかどうかだけでなく、用語の関連性によって適切にランク付けしたいと考えています。

これを達成する方法はありますか??

ありがとう!

最初のクエリ:

SELECT 
    rcv_id,
    rcv_title,
    rcv_desc,
    (MATCH(rcv_title) AGAINST ('nur*')) AS title_relevance,
    (MATCH(rcv_desc) AGAINST ('nur*')) AS desc_relevance
FROM rc_vacancy
WHERE
    ( MATCH(rcv_title,rcv_desc) AGAINST ('nur*') )
    AND rcv_deleted = 'off'
    AND rcv_active = 'on'
    AND rcv_type = 'P'
ORDER BY title_relevance DESC, desc_relevance DESC, rcv_lastupdated

2 番目のクエリ:

SELECT
    rcv_id,
    rcv_title,
    rcv_desc,
    (MATCH(rcv_title) AGAINST ('nurse')) AS title_relevance,
    (MATCH(rcv_desc) AGAINST ('nurse')) AS desc_relevance
FROM rc_vacancy
WHERE
    ( MATCH(rcv_title,rcv_desc) AGAINST ('nurse') )
    AND rcv_deleted = 'off'
    AND rcv_active = 'on'
    AND rcv_type = 'P'
ORDER BY title_relevance DESC, desc_relevance DESC, rcv_lastupdated

ワイルドカードなしで「nur」を検索しても、結果はゼロになります。

SELECT
    rcv_id,
    rcv_title,
    rcv_desc,
    (MATCH(rcv_title) AGAINST ('nur')) AS title_relevance,
    (MATCH(rcv_desc) AGAINST ('nur')) AS desc_relevance
FROM rc_vacancy
WHERE
    ( MATCH(rcv_title,rcv_desc) AGAINST ('nur') )
    AND rcv_deleted = 'off'
    AND rcv_active = 'on'
    AND rcv_type = 'P'
ORDER BY title_relevance DESC, desc_relevance DESC, rcv_lastupdated
4

1 に答える 1

1

の式にAGAINSTワイルドカードを含めないでください。LIKEのようなクエリではなく、全文検索を行っています。

于 2013-01-25T14:49:54.987 に答える