ホームページ  >  記事  >  バックエンド開発  >  PHP検索機能の原理

PHP検索機能の原理

藏色散人
藏色散人オリジナル
2019-11-09 09:24:302834ブラウズ

PHP検索機能の原理

#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);

4. 全文検索 (SQL ステートメント) を使用します

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 サイトの他の関連記事を参照してください。

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