4

キーワード検索例「CAR WASH」
洗車は、位置に関係なく文字列に含まれている必要があります

検索可能な文字列は非常に長くなる可能性があるため、クエリではこれらのキーワードをまとめて検索するか、個別に検索する必要があります。2 つ以上のキーワードを指定できます。

$query="SELECT * FROM TABLE WHERE zip LIKE'abc'";
$key= explode(" ", $keywords);
for($i = 0; $i < count($key); $i++){
    $query.=" AND (dealTitle LIKE '".$key[$i]." %' OR dealTitle LIKE '% ".$key[$i]." %' OR dealTitle LIKE '% ".$key[$i]." ')";
    }

ただし、クエリは「car」または「wash」を含むレコードを返しています。

「洗車」を使用する場合、両方の単語が少なくとも 1 回表示される必要があります。この条件を考慮して検索を変更する方法について何か提案はありますか?

4

5 に答える 5

4

mysqlデータベースを使用している場合は、堅牢でスケーラブルなソリューションとなる全文検索機能があります。

$query .= " AND MATCH(dealTitle) AGAINST('". $searchString ."')";

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match

MySQLの全文検索機能を理解するには、この記事を参照してください。

于 2012-08-08T08:13:12.203 に答える
1
for($i = 0; $i < count($key); $i++){
        $query.=" AND (dealTitle rlike '[[:<:]]".$key[$i]."[[:>:]]' )";
}    

ANDを使用する必要があります

編集:

for($i = 0; $i < count($key); $i++){
            $query.=" AND (dealTitle like '% ".$key[$i]." %' or dealTitle like '% ".$key[$i]."' or dealTitle like '".$key[$i]."%') ";
    }    
于 2012-08-08T08:10:10.947 に答える
0

このクエリを試してください:-

AND (dealTitle LIKE '%car wash%' )
于 2012-08-08T08:15:55.477 に答える
0

基本的に、検索エンジンが行うこと、つまり全文索引付けを達成しようとしています。 LIKE '%keyword%'はご存知のように部分一致です。部分的な単語にヒットするだけでなく、データベースがディスク上の各レコードを読み取って比較する必要があるため、非常に遅くなります。

フルテキスト インデクサーの使用を検討してください。MySQL は特にそれをサポートしています。全文を見る

于 2012-08-08T08:18:20.673 に答える
0

これを試して:

   AND (CONCAT(' ',dealTitle,' ') LIKE '% car %' and 
   CONCAT(' ',dealTitle,' ') LIKE '% wash %' )
于 2012-08-08T08:09:17.130 に答える