php
  • mysql
  • 2016-11-24 7 views 0 likes 
    0

    私はオートコンプリート検索を行い、その説明から単語の提案を受けたいと思います。たとえば、私はポストの説明を持っています: "これはサンプルの説明です"。mysqlのような類似の単語だけを取得する方法

    私は

    $sql ="SELECT post_content FROM {$wpdb->posts} WHERE LOWER(post_content) LIKE LOWER('%".$s."%') AND post_status='publish'"; 
    

    このクエリを使用しますが、私はすべてのマッチングの説明を取得します。どのように私はクエリに一致する単語を1つだけ得ることができますか?たとえば、 "sam ..."と書いた場合、 "sample"という単語だけを取得したい、あるいは "sample des ..."と書くと、その単語がどこにあるのか完全な説明ではなく "sample description"それはあなたのために働く場合

    +0

    私はそれだけでmysqlを行うことはできません。 –

    +0

    私もそうだと思います。私に何かを提案できますか? – user3514052

    +0

    'post_content'を使用するとPHPの正規表現を使用して、必要なテキストを一致させて抽出します –

    答えて

    1

    あなたはこれを試すことができます。

    サンプル

    SELECT 
        SUBSTRING_INDEX(
         SUBSTRING('this is sample description and more' FROM LOCATE('sample des','this is sample description and more')) 
         ,' ' 
         ,LENGTH('sample des') - LENGTH(replace('sample des', ' ', '')) +1 
        ) as result; 
    

    結果

    result 
    sample description 
    

    あなたのSQLのために、このクエリを試してみてください。

    $sql =" 
    SELECT 
        SUBSTRING_INDEX(
         SUBSTRING(post_content FROM LOCATE('".$s."',post_content)) 
         ,' ' 
         ,LENGTH('".$s."') - LENGTH(replace('".$s."', ' ', '')) +1 
        ) 
    FROM {$wpdb->posts} 
    WHERE LOWER(post_content) LIKE LOWER('%".$s."%') AND post_status='publish'"; 
    

    +0

    omg、sooo much so !!!ありがとう、非常に感謝しています:) – user3514052

    +0

    @ user3514052 - ok、少ししか知られていないバグがあります。検索文字列の2つの単語の間にスペースがあれば、結果はより多くの単語になりますが、PHPで2つのscpacesを1つに置き換えたり、$ sを** replace( '"。$ s" "、 ''、 '')**のSQL –

    関連する問題