ホームページ  >  記事  >  バックエンド開発  >  PHPでファジークエリを実装する方法

PHPでファジークエリを実装する方法

怪我咯
怪我咯オリジナル
2017-07-12 11:02:073909ブラウズ

「あいまい検索」は、その名前が示すように、ユーザーが入力したキーワードの同義語に基づいて検索システムが自動的にあいまい検索を実行し、より多くの検索結果を取得することを意味します。シノニムはシステムの管理インターフェイスによって設定されます。 「コンピューター」と「コンピューター」を同義語として設定し、「コンピューター」を検索すると、「コンピューター」を含む Web ページも検索結果に表示されます。あいまい検索も同義語検索であり、ここでの同義語は、「検索管理」の「同義語辞書」を通じてユーザーによって設定されます。ユーザーが検索ページで類義語に任意の単語を入力して検索すると、「あいまい検索」チェックボックスが選択されている限り、キーワードのすべての類義語情報も取得されます。

次のエディターは、PHP ファジークエリの実装方法を提供します (推奨)。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして一緒に見てみましょう

パターンクエリ

1. SQL マッチングモード

2. 正規表現 マッチングモード (通常は推奨されません)

SQL マッチングモード

1. SQL マッチング モードを使用する場合、 演算子 = or! は使用できません。 =、代わりに演算子 LIKE または NOT LIKE を使用します。

2. SQL マッチング モードを使用して、MYSQL は 2 種類の ワイルドカード を提供します。

% は任意の数の任意の文字 (0 を含む) を表します。

_ は任意の 1 文字を表します。

3. 一致形式に上記の 2 つのワイルドカード文字が含まれていない場合、クエリの効果は次のようになります。 = または! と同等です。 =

4. SQL マッチング モードを使用します。マッチングする場合、大文字と小文字は区別されません

#查询用户名以某个字符开头的用户
#查询用户名以字符'l'开头的用户: l%
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名以某个字符结尾的用户
#查询用户名以字符'e'结尾的用户:e%
SELECT * FROM user WHERE username LIKE 'e%';
#查询用户名包含某个字符的用户
#查询用户名包含字符'o'的用户:%o%
SELECT * FROM user WHERE username LIKE '%o%';
#查询包含三个字符的用户
SELECT * FROM user WHERE username LIKE '_';
#查询用户名第二个字符为o的用户:_o%
SELECT * FROM user WHERE username LIKE '_o%';

正規表現マッチング モード

任意の 1 文字と一致します

*match 0 Oneまたはその前にある文字

x* は、任意の数の x 文字と一致することを意味します

[..] 括弧内の任意の文字と一致します

[abc] 文字 ab または c と一致します

[a-z] 任意の文字と一致します
[0- 9] 任意の数字と一致します
[0-9]* 任意の数字の任意の数字と一致します
[a-z]* 任意の数の文字と一致します

^ は特定の文字または

文字列で始まることを意味します

^a は文字で始まることを意味しますa

$ は特定の文字または文字列で終わることを意味します

s$ は文字 s で終わることを意味します

正規表現一致パターンの使用に使用される演算子は次のとおりです:

REGEXP または NOT REGEXP (RLIKE または NOT RLIKE )

注: 正規表現のマッチング パターンの場合、正規表現がマッチング フィールドのどこかにある場合、

ワイルドカードのみを使用する場合は、パターンを一致させるために両側にワイルドカードを置く必要はありません。一致するには、N を仮定すると、一致パターンはそれが N 以上であることを示します

上記の文をどう理解すればよいでしょうか?

つまり

... 3 文字以上のデータと一致します

.... 4 文字以上のデータと一致します

#ユーザー名が文字 l で始まるユーザーをクエリします: ^l;

#正規表現 書き方

SELECT * FROM user WHERE username REGEXP '^l';
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名正好是三个字符的用户:^...$;
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE '_';
#正则表达式写法
SELECT * FROM user WHERE username REGEXP '^...$';

以上がPHPでファジークエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。