0

現在取り組んでいるプロジェクトの検索機能を最適化するのに苦労しています。

以下のクエリの検索語が であるとしますGreen Apple

このフレーズにはいくつかの結果greenといくつかの結果がありますが、それ以外の結果appleがあるgreen appleため、このフレーズは空の結果セットを返します。

green基本的にすべての結果とすべての結果を取得し、apple重複するコードなしでそれらを 1 つの結果セットに結合する簡単な方法があるかどうか疑問に思っていました。

$query = "SELECT * FROM files WHERE keywords LIKE '%".$searchText."%' ORDER BY website, description ASC";
$results = mysqli_query($mysqli, $query);

キーワード フィールドの例

apple peach pear tomatoe

提案に感謝します!

よろしくお願いします!

4

2 に答える 2

2

私のコメントをフォローアップするには、クエリは次のようになります。

SELECT * FROM files WHERE 
MATCH(`keywords`) AGAINST('".$searchText."' IN BOOLEAN MODE) 
ORDER BY website, description ASC

MATCH AGAINSTでは、検索対象の列に全文索引が必要であることに注意してください。この場合、filesテーブルの構造を調べて、列に全文索引を配置しkeywordsます。phpmyadmin では、編集、ドロップ、一意、プライマリなどと同じ領域にあるワンクリック ボタンです。

于 2013-07-11T18:46:16.273 に答える