1

希望のコードを取得するのを手伝ってくれる人はいますか?
複数のキーワードが書き込まれる入力フィールドがあります。
例:

opel corsa car

データベースにコンマで区切られたタグ エントリがあります。

1. opel, corsa
2. car, opel
3. juice
4. car

私がやりたいことは、全文検索を実装することですが、キーワードからキーワードへの検索に基づいています。つまり、キーワードのいずれかを含むすべての結果を一覧表示したいということです。ただし、誰かが corsoa または corsa の代わりに corsae を検索する場合に備えて、これらの検索語を 2 文字でトリミングしたいと考えています。

私がこれまでに得たものは次のとおりです。

$input = $_GET["tag"];
$input = mb_strtolower($input,'UTF-8');
$tag = explode(" ", $input);
$tagCheck = '(tags LIKE "%'.implode('%") OR (tags LIKE "%', $tag).'%")';

そしてクエリで

$dbq = $dbco->prepare("SELECT name FROM table WHERE ".$tagCheck." HAVING MAX(price) < 50000");
4

1 に答える 1

0

Db の設計を変更することをお勧めします (可能であれば)。

クエリを「より簡単に」作成するだけでなく、パフォーマンスを向上させるためにデータベース リレーショナルを作成してみてください。

クエリで、MySQL の関数 find_in_set を試してください。

SELECT ... WHERE FIND_IN_SET('1', field)

例:

mysql> select * from fruits;
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select * from fruits where find_in_set(' apple',fruit);
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

編集:

テーブルが MyISAM または Innodb (MySQL V. 5.6 以降) の場合、テキスト インデックスを作成し、同様のクエリを作成できます。

あなたの選択では、これを使用してください

 SELECT ... WHERE tads like ('%text%')

% (ワイルドカード) を使用

于 2012-06-29T13:37:01.483 に答える