#PHP 検索機能の原理
PHP 検索機能の考え方 (単語分割一致)
1. 最も単純な検索 (like ステートメントの一致を使用)
この検索は単一の単語の検索にのみ使用できます例: ユーザーのニックネーム検索、グループ名検索など 推奨: 「PHP チュートリアル 」
2. 実際の検索 (単語分割一致)
このメソッドは、記事コンテンツのタイトルの取得など、データ セグメントの検索に使用できます。原則:
Mysql 一致で全文検索を使用します。対実装手順
1. Mysql全文検索フルテキストを使用するための前提条件:
テーブルのタイプは次のとおりです。 MyISAM であること (MySQL5.6 Innodb も後で使用できます)全文検索を確立するためのフィールド タイプは、char、varchar、textである必要があります2. -text search の詳細設定 (mysql の設定)
Mysql のデフォルト設定では、インデックス付けされた単語の長さが 4 であるため、中国語の単語をサポートしたい場合は、最初にこれを変更する必要があります。##*Unix ユーザーは my.cnf を変更する必要があります。通常、このファイルは /etc /my.cnf にあります。見つからない場合は、まず find / -name 'my.cnf'
Add を検索してください[mysqld] の位置:
ft_min_word_len = 2
他の属性も
ft_wordlist_charset = gbk
ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt
ft_stopword_file = /home/soft/mysql/share/mysql/stopwords- gbk.txt
少し説明:
ft_wordlist_charset は辞書の文字セットを表します。よくサポートされているものは (UTF-8、gbk、gb2312、big5)
ft_wordlist_file はい 語彙ファイル。各行には単語とその単語の出現頻度が含まれます (曖昧さ回避のためのみ、多数のタブまたはスペースで区切られています)
ft_stopword_file は、インデックス付けされていない語彙を 1 行に 1 つずつフィルタリングすることを意味します。
ft_min_word_len は、インデックスに追加される単語の最小長です。デフォルトは 4 です。中国語の単一単語をサポートするには、は 2
3 に変更されます。全文検索を作成します (テーブルにインデックスを追加します)テーブルの作成時にフィールドを識別するには FullText キーワードを使用します。 ALTER TABLE (または CREATE INDEX) を使用して、既存のテーブルのインデックスを作成します
CREATE fulltext INDEX index_name ON table_name(colum_name);
MATCH を使用しますSELECT
全体の構文: MATCH(col1,col2,…) AGAINST (expr[search_modifier]) の WHERE 句内の関数。
MATCH の内容は、FULLTEXT インデックスが設定されており、データが検索される列です。
AGAINST の expr は、検索されるテキストの内容であり、
search_modifier はオプションです。検索タイプです。
search_modifier の可能な値は次のとおりです:
IN NATURAL LANGUAGEMODE、IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION、IN BOOLEAN MODE、WITH QUERY EXPANSION。
search_modifier の各値は、自然言語全文検索、自然言語全文検索などの全文検索のタイプを表します。クエリ拡張あり、ブール型全文検索、クエリ拡張型全文検索 (デフォルトでは IN NATURAL LANGUAGE MODE が使用されます)。
rree以上がPHP検索機能の原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。