ホームページ > バックエンド開発 > PHPチュートリアル > PHP Sphinx の高効率検索エンジン構成チュートリアル

PHP Sphinx の高効率検索エンジン構成チュートリアル

WBOY
リリース: 2016-07-25 09:03:00
オリジナル
1279 人が閲覧しました
  1. tar -xvzf sphinx-2.0.1-beta.tar.gz
  2. cd sphinx-2.0.1-beta
  3. ./configure --prefix=/usr/local/sphinx --with-mysql -- with-iconv
コードをコピー

注: 64 ビットの場合はパラメーター --enable-id64 を追加してください

  1. make && make install
  2. cd /usr/local/sphinx/etc/
  3. cp sphinx.conf.dist sphinx.conf
コードをコピー

構成: # # Sphinx 設定ファイルのサンプル # # 警告!このサンプル ファイルには利用可能なすべてのオプションが記載されていますが、 # これには (非常に) 短いヘルパーの説明のみが含まれます。を参照してください。 # 詳細については、doc/sphinx.html を参照してください。 #

########################################## ## データソース定義 ######################################## ソースソース1 { # データソースタイプ。必須、デフォルト値なし # 既知のタイプは、mysql、pgsql、mssql、xmlpipe、xmlpipe2、odbc です。 type = mysql

############################################## # ## SQL 設定 ('mysql' および 'pgsql' タイプの場合) ################################################

# SQL ソースタイプのいくつかの簡単なパラメーター sql_host = ローカルホスト sql_user = ルート sql_pass = ****** sql_db = ****** sql_port = 3306 # オプション、デフォルトは 3306 です

# UNIX ソケット名 # オプション、デフォルトは空です (クライアントライブラリのデフォルトを再利用します) # Linux では通常 '/var/lib/mysql/mysql.sock' # FreeBSD では通常 '/tmp/mysql.sock' # sql_sock = /tmp/mysql.sock

# MySQL 固有のクライアント接続フラグ # オプション、デフォルトは 0 # データ転送方式 # mysql_connect_flags = 32 # 圧縮を有効にする

# MySQL 固有の SSL 証明書設定 # オプション、デフォルトは空です #SLL接続 # mysql_ssl_cert = /etc/ssl/client-cert.pem # mysql_ssl_key = /etc/ssl/client-key.pem #mysql_ssl_ca = /etc/ssl/cacert.pem

# MS SQL 固有の Windows 認証モード フラグ # charset_type インデックスレベル設定と同期している必要があります # オプション、デフォルトは 0 # # mssql_winauth = 1 # 現在ログオンしているユーザーの資格情報を使用します

# MS SQL 固有の Unicode インデックス作成フラグ # オプション、デフォルトは 0 (SBCS データを要求) # # mssql_unicode = 1 # サーバーから Unicode データをリクエストします

# ODBC 固有の DSN (データソース名) # odbc ソースタイプには必須、デフォルト値なし # # odbc_dsn = DBQ=C:data;DefaultDir=C:data;Driver={Microsoft Text Driver (*.txt; *.csv)}; # sql_query = document.csv から ID、データを選択します

# ODBC および MS SQL 固有の列ごとのバッファー サイズ # オプション、デフォルトは自動検出 # # sql_column_buffers = content=12M、コメント=1M

# プレクエリ、メインのフェッチクエリの前に実行されます # 複数値、オプション、デフォルトは空のクエリのリスト # 送信SQL句前送信 sql_query_pre = 名前を設定 utf8 sql_query_pre = SET SESSION query_cache_type=OFF

# メインドキュメントフェッチクエリ # 必須、整数のドキュメント ID フィールドは最初に選択された列でなければなりません # 必要なテーブルの構築 SQL_クエリ = SELECT id、ターゲットタイプ、ジャンル、スター、サブタイトル、スポーツチーム、音楽バンド、音楽アルバム ko_link から #場合は、複数のデータ ソースが 1 つのインデックスに存在する場合、フィールドの順序を保持する必要がある、データの数が一致しているかどうか、出错

# 結合/ペイロードフィールドフェッチクエリ # フィールドを結合すると、(遅い) JOIN と GROUP_CONCAT を回避できます # ペイロード フィールドを使用すると、キーワードごとのカスタム値を添付できます (ランキング用など) # # 構文は FIELD-NAME 'from' ( 'query' | 'payload-query' );クエリ # 結合フィールド QUERY は 2 つの列 (docid、text) を返す必要があります # ペイロード フィールド QUERY は 3 つの列 (docid、キーワード、重み) を返す必要があります # # クエリ結果はドキュメント ID の昇順である必要があります。 # 複数値、オプション、デフォルトは空のクエリのリスト # 追加文字列,来源と表自動接続 #字段结果集保持 # (1,タグ1) # (1,タグ2) # (2,タグ3) # (2,タグ4) # 追加のフィールドは検索に使用されます。結果として、3 番目のフィールドがあり、3 番目のフィールドはこの承認の重みを示します。 の重みは 1 より大きい値です # sql_joined_field = クエリからのタグ; SELECT docid, CONCAT('tag',tagid) FROM タグ ORDER BY docid ASC # sql_joined_field = ペイロード クエリからの wtags;タグから docid、タグ、タグウェイトを選択 ORDER BY docid ASC

# ファイルベースのフィールド宣言 # # このフィールドの内容はファイル名として扱われます # ファイルがロードされ、フィールドの代わりにインデックスが作成されます # # 最大ファイル サイズは max_file_field_buffer インデクサー設定によって制限されます # ファイル IO エラーは致命的ではなく、警告として報告されます # 取っ字段の挿入文書 # sql_file_field = コンテンツファイルのパス

# 範囲クエリのセットアップ、最小 ID 値と最大 ID 値を返す必要があるクエリ # オプション、デフォルトは空です # # sql_query は $start と $end の境界を参照する必要があります # 範囲クエリを使用する場合: #分区蟥询、MYSQL死锁を防ぐ # SQL_クエリ = # SELECT doc.id、doc.id AS グループ、doc.title、doc.data # ドキュメントドキュメントから # WHERE id>=$start AND id

# 範囲クエリステップ # オプション、デフォルトは 1024 #分区查询跳步 #sql_range_step = 1000

# 符号なし整数属性の宣言 # 複数値 (任意の数の属性が許可されます)、オプション # オプションでビットサイズを指定可能、デフォルトは32 # リスクなし番号セグメント #sql_attr_uint = ターゲットタイプ # sql_attr_uint = forum_id:9 # forum_id の 9 ビット #sql_attr_uint = グループ ID #安全BOOLフィールド # ブール属性の宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 1 ビットサイズの sql_attr_uint と同等 # #sql_attr_bool = is_deleted

# bigint 属性宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 署名付き (uint とは異なります!) 64 ビット属性を宣言します # 蕿整字段 #sql_attr_bigint = my_bigint_id

# UNIX タイムスタンプ属性宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 整数に似ていますが、日付関数でも使用できます # 請求時間のフィールド # sql_attr_timestamp = posted_ts # sql_attr_timestamp = last_edited_ts #sql_attr_timestamp = date_added # 文字列の序数属性の宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 文字列を (バイト単位で) ソートし、そのインデックスをソートされたリストに格納します # この属性によるソートは、元の文字列によるソートと同等です # 注意事項文字列は排序等に使用されますが、この文字列は保存されません # sql_attr_str2ordinal = 著者名

# 浮動小数点属性宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 値は単精度の 32 ビット IEEE 754 形式で保存されます # 懸念浮点フィールド # sql_attr_float = lat_radians # sql_attr_float = long_radians

# 多値属性 (MVA) 属性宣言 # 複数値 (任意の数の属性が許可されます)、オプション # MVA 値は、符号なし 32 ビット整数の可変長リストです # # 構文は ATTR-TYPE ATTR-NAME 'from' SOURCE-TYPE [;QUERY] [;RANGE-QUERY] です # ATTR-TYPE は 'uint' または 'timestamp' です # SOURCE-TYPE は 'field'、'query'、または 'ranged-query' です # QUERY は、すべての ( docid, attrvalue ) ペアをフェッチするために使用される SQL クエリです # RANGE-QUERY は、最小 ID 値と最大 ID 値を取得するために使用される SQL クエリであり、「sql_query_range」と同様です。 # 同意复合字段 # sql_attr_multi = クエリからの uint タグ; SELECT docid、tagid FROM タグ # sql_attr_multi = ranged-query からの uint タグ; # タグ WHERE id>=$start AND id

# 文字列属性の宣言 # 複数の値 (任意の数が許可されます)、オプション # 文字列を保存および取得できます # ただデータは保存されていますが、会議インデックス変更フィールドはありません #sql_attr_string = stitle

# wordcount 属性宣言 # 複数の値 (任意の数が許可されます)、オプション # インデックス作成時に単語をカウントできます # 一致率を高めるために使用される、关键字のフィールドに変換する #sql_attr_str2wordcount = stitle

# フィールドと属性の宣言を組み合わせたもの (単一列から) # 列を属性として保存しますが、フルテキスト フィールドとしてもインデックスを作成します # 跟sql_attr_string は異なりますこのプロパティ追加インデックス # sql_field_string = 著者 # sql_field_str2wordcount = タイトル # ポストクエリ、sql_query の完了時に実行されます # オプション、デフォルトは空です #取後查询 #sql_query_post = # post-index-query、インデックス作成が正常に完了したときに実行されます # オプション、デフォルトは空です # $maxid は実際に DB からフェッチされた最大ドキュメント ID に展開されます #索引後查询 # sql_query_post_index = REPLACE INTO カウンター ( id, val ) # VALUES ( 'max_indexed_id', $maxid )

# 範囲クエリスロットル (ミリ秒単位) # オプション、デフォルトは遅延なしを意味する 0 です # 各クエリステップの前に指定された遅延を強制します #分区蟥询の時間間隔 sql_ranged_throttle = 0

# ドキュメント情報クエリ、CLI 検索のみ (つまり、テストとデバッグ) # オプション、デフォルトは空です # $id マクロを含める必要があり、その ID でドキュメントをフェッチする必要があります #コマンド行试查询結果用 sql_query_info = SELECT * FROM ko_link WHERE id=$id

# kill-list クエリ、kill-list のドキュメント ID を取得します # k-list は、同じクエリ内の先行するインデックスからの一致を抑制します # オプション、デフォルトは空です ##清理指定の询ID列表、データの変更 # sql_query_killlist = 編集されたドキュメントから ID を選択>=@last_reindex

# インデックス作成時にインデクサー側でアンパックする列 # 複数の値、オプション、デフォルトは空のリスト # ZIP 圧縮を有効にするとシステム負荷が軽減されますが、zlib ライブラリ zlib-dev ライブラリが利用可能である必要があります # unpack_zlib = zlib_column # unpack_mysqlcompress = 圧縮列 # unpack_mysqlcompress = 圧縮列_2

# MySQL COMPRESS() アンパッカーで許可される最大アンパック長 # オプション、デフォルトは 16M # 圧縮バッファのサイズはフィールドストレージ値より小さくすることはできません # unpack_mysqlcompress_maxsize = 16M

######################### ## xmlpipe2 構成 ######################### # type = xmlpipe

# xmlpipe ストリームプロデューサーを呼び出すシェルコマンド # 必須 # # xmlpipe_command = cat /usr/local/sphinx/var/test.xml

#xmlpipe2 フィールド宣言 # 複数の値、オプション、デフォルトは空です # # xmlpipe_field = 件名 #xmlpipe_field = コンテンツ

#xmlpipe2 属性宣言 # 複数の値、オプション、デフォルトは空です # すべての xmlpipe_attr_XXX オプションは sql_attr_XXX と完全に似ています # # xmlpipe_attr_timestamp = 公開済み #xmlpipe_attr_uint = author_id

# UTF-8 検証を実行し、間違ったコードを除外します # 非 UTF-8 ドキュメントでの XML パーサーの停止を回避します #オプション、デフォルトは0です # #xmlpipe_fixup_utf8 = 1 }

# 継承されたソースの例 #データソースの継承 # すべてのパラメータは親ソースからコピーされます。 # このソース定義でオーバーライドされる可能性があります #source src1throttled : src1 #{ # SQL_ranged_throttle = 100 #}

##################### ## インデックス定義 ##################### # ローカルインデックスの例 # # これはファイルシステムにローカルに保存されるインデックスです # # すべてのインデックス作成時のオプション (形態や文字セットなど) # ローカルインデックスごとに設定されます インデックステスト1 { # インデックスタイプ # オプション、デフォルトは「プレーン」です # 既知の値は「plain」、「distributed」、および「rt」です (以下のサンプルを参照) #インデックスタイプローカル分散 #タイプ=プレーン

# 個のドキュメント ソースをインデックスに追加します # 複数の値、必須 # 個のドキュメント ID は、すべてのソースにわたってグローバルに一意である必要があります #データソース、複数のデータソースを使用可能 ソース = src1

# インデックスファイルのパスとファイル名(拡張子なし) # 必須、パスは書き込み可能でなければなりません、拡張子は自動的に追加されます # インデックス保存パス パス = /usr/local/sphinx/var/data/test1

# ドキュメント属性値 (docinfo) ストレージモード # オプション、デフォルトは「extern」です # 既知の値は「none」、「extern」、「inline」です #インデックスの保存方法 docinfo = 外部

# キャッシュされたデータ (.spa および .spi) のメモリ ロック、スワップを防ぐ # オプション、デフォルトは 0 (mlock しない) # searchd は root から実行する必要があります #メモリロックには十分な権限が必要です mlock = 0

# 適用する形態学プリプロセッサのリスト #オプション、デフォルトは空です # # 組み込みプリプロセッサは 'none'、'stem_en'、'stem_ru'、'stem_enru'、 # 'soundex' および 'metaphone' から利用可能な追加のプリプロセッサ。 # libstemmer は 'libstemmer_XXX' です。XXX はアルゴリズム コードです # (libstemmer_c/libstemmer/modules.txt を参照) #単語抽出ツール # morphology = Stem_en、stem_ru、soundex # 形態学 = libstemmer_german # 形態学 = libstemmer_sv 形態学 = Stem_ja

# ステミングを有効にする最小単語長 # オプション、デフォルトは 1 (すべてをステム) # ステミングの最小単語長 # min_stemming_len = 1

# ストップワード ファイルのリスト (スペース区切り) #オプション、デフォルトは空です # 内容はプレーンテキストであり、charset_table とステミングの両方が適用されます # 検索語を無効にする # ストップワード = /usr/local/sphinx/var/data/stopwords.txt

# wordforms ファイル、「mapfrom > mapto」プレーンテキスト形式 #オプション、デフォルトは空です #Word タイプの辞書は Spelldump ツールを使用して生成できます # wordforms = /usr/local/sphinx/var/data/wordforms.txt

# トークン化例外ファイル #オプション、デフォルトは空です #Token 特殊ケース ファイル。つまり、一部の単語は完全な意味を持ち、インデックスに分割できません (a&t や a&t など)。 # プレーンテキスト、マップ元部分では大文字と小文字が区別され、スペースは区別されません # 1 行に 1 つの「複数の単語のマップ => ToASingleOne」エントリ # # 例外 = /usr/local/sphinx/var/data/Exceptions.txt

#インデックス付き単語の最小長 # デフォルトは 1 (すべてにインデックスを付ける) # インデックスの最小長。つまり、指定された長さよりも短い単語はインデックス付けされません。 min_word_len = 1

# 文字セットエンコーディングタイプ # オプション、デフォルトは「sbcs」です # 既知のタイプは 'sbcs' (Single Byte CharSet) と 'utf-8' です # 文字コード charset_type = utf-8

# 文字セットの定義と大文字小文字の折りたたみルール "table" # オプション、デフォルト値はcharset_typeによって異なります # # デフォルトは英語とロシア語の文字のみを含むように構成されています # テーブルを変更して追加のテーブルを含める必要があります # この動作は将来のバージョンで変更される可能性があります # # 'sbcs' のデフォルト値は # charset_table = 0..9、A..Z->a..z、_、a..z、U+A8->U+B8、U+B8、U+C0..U+DF->U +E0..U+FF、U+E0..U+FF #変換文字テーブル # 'utf-8' のデフォルト値は # charset_table = 0..9、A..Z->a..z、_、a..z、U+410..U+42F->U+430..U+44F、U+430.. U+44F

# 無視される文字リスト # オプション、デフォルト値は空です # 文字テーブルを無視する #ignore_chars = U+00AD

# インデックスに付ける単語プレフィックスの最小長 # オプション、デフォルトは 0 (接頭辞のインデックスを作成しません) #インデックスの最小プレフィックス長。注意して使用してください。インデックス作成と検索時間が悪化します。 # min_prefix_len = 0

# インデックスへの単語中置の最小長 # オプション、デフォルトは 0 (インフィックスのインデックスを作成しません) # インデックスの最小挿入長は、インデックス作成と検索時間が低下するため、注意して使用してください。 # min_infix_len = 0

# プレフィックス/インフィックスインデックス作成を制限するフィールドのリスト # オプション、デフォルト値は空です (プレフィックス/インフィックス モードですべてのフィールドにインデックスを付けます) # 未知 # prefix_fields = ファイル名 # infix_fields = URL、ドメイン

# プレフィックス/インフィックスインデックスを検索するときにスター構文 (ワイルドカード) を有効にする # 検索時間のみ。インデックス作成には影響しません。0 または 1 を指定できます # オプション、デフォルトは 0 (ワイルドカード構文は使用しないでください) # アスタリスク構文を有効にする #enable_star = 1

# 適合インデックスを検索するときに、キーワードを正確な形式やスターで展開します # 検索時間のみ。インデックス作成には影響しません。0 または 1 を指定できます # オプション、デフォルトは 0 (キーワードを展開しない) # 検索キーワードを次の形式で展開します: running -> ( running | *running* | =running ) #expand_keywords = 1

# インデックスへの n グラムの長さ (CJK インデックス作成用) # 現時点では 0 と 1 のみをサポートしており、他の長さは実装される予定です # オプション、デフォルトは 0 (N グラムを無効にする) # 中国語およびその他の言語の基本サポート #ngram_len = 1

# N-gram 文字リスト、CJK インデックス作成用 #オプション、デフォルトは空です #中国語またはその他の言語の値の範囲 # ngram_chars = U+3000..U+2FA1F

# フレーズ境界文字リスト #オプション、デフォルトは空です # 境界文字 #phrase_boundary = ., ?, !, U+2026 # 水平省略記号

# フレーズ境界の単語位置の増分 #オプション、デフォルトは0です # 境界文字の増分 # フレーズ境界ステップ = 100

# ブレンドキャラクターリスト # 混合文字は区切り文字と有効な文字の両方としてインデックス付けされます # たとえば、AT&T の場合、3 つのトークン (「at」、「t」、「at&t」) が生成されます。 #オプション、デフォルトは空です # 混合文字リスト # Blend_chars = +, &, U+23

# ブレンドトークンインデックス作成モード # ブレンドされたトークンのインデックス作成バリアントのカンマ区切りリスト # 既知のバリアントは、trim_none、trim_head、trim_tail、trim_both、skip_pure です # オプション、デフォルトはtrim_noneです #未知 # Blend_mode = トリムテール、スキップ_ピュア

# 受信ドキュメントから HTML タグを削除するかどうか # 既知の値は 0 (ストリップしない) と 1 (ストリップする) です #オプション、デフォルトは0です # htmlタグを削除(本文が削除されるので注意) html_strip = 0

# HTML を削除する場合にインデックスを作成する HTML 属性 # オプション、デフォルトは空です (何もインデックスを付けません) # 予約済みの HTML タグ # html_index_attrs = img=alt,title; a=title;

# 削除する HTML 要素の内容 # オプション、デフォルトは空です (要素の内容を削除しません) # ラベルが削除されるだけでなく、ラベルに含まれるテキストも削除されます。 #html_remove_elements = スタイル、スクリプト

# 起動時にインデックスデータファイルを事前に開くかどうか # オプション、デフォルトは 0 (事前にオープンしない)、検索のみ # 事前にインデックスを開くか、クエリのたびにインデックスを開く # プレオープン = 1

# 辞書 (.spi) をディスク上に保持するか、RAM にキャッシュするか # オプション、デフォルトは 0 (RAM にキャッシュ)、検索のみ #辞書ファイルをメモリに保存するかどうか #ondisk_dict = 1

# インプレース反転を有効にするかどうか (ディスクが 2 分の 1、速度が 90 ~ 95%) # オプション、デフォルトは 0 (個別の一時ファイルを使用)、インデクサーのみ # インプレースインデックス反転を有効にするかどうかにより、ディスク使用量が削減され、パフォーマンスがわずかに低下します。 #inplace_enable = 1

# インプレース微調整オプション # オプション、デフォルトは以下にリストされています #リバースを適切に微調整する # inplace_hit_gap = 0 # 事前に割り当てられたヒットリストのギャップ サイズ # inplace_docinfo_gap = 0 # 事前に割り当てられた docinfo ギャップ サイズ # inplace_reloc_factor = 0.1 # アリーナ内の再配置バッファー サイズ # inplace_write_factor = 0.1 # アリーナ内の書き込みバッファーサイズ

# ステミングされたバージョンとともに元のキーワードのインデックスを作成するかどうか # 「=exactform」演算子が機能するようにします #オプション、デフォルトは0です # 元の単語のインデックスを作成しながら、元のキーワードのステミング/再マッピングされた形式のインデックスを作成するかどうか #index_exact_words = 1

# 過不足 (min_word_len 未満) ワードの位置増分 # オプション、許可される値は 0 と 1、デフォルトは 1 #短すぎる単語 (min_word_len より短い単語) を渡した後、位置の値を増やします。 #overshort_step = 1

#ストップワードの位置の増分 # オプション、許可される値は 0 と 1、デフォルトは 1 #ストップワードの後に​​位置値のオプションを追加します #ストップワードステップ = 1

#ヒットレスワードリスト これらのキーワードの # 位置はインデックスに保存されません # オプション、許可される値は「all」またはリストファイル名です # 中断できない文字のリスト # hitless_words = すべて # hitless_words = hitless.txt #キャラクターファイル

# 文と段落の境界を検出してインデックスを付ける # SENTENCE 演算子と PARAGRAPH 演算子が機能するために必要です # オプション、許可される値は 0 と 1、デフォルトは 0 # HTMLのタグ結合をチェックするかどうか #index_sp = 1

# 個のインデックスゾーン、HTML/XML タグで区切られる # タグとワイルドカードのカンマ区切りリスト # ZONE オペレーターが機能するために必要です # オプション、デフォルトは空の文字列です (ゾーンにインデックスを付けません) # HTMLタグの重み #index_zones = タイトル、h*、th }

# 継承されたインデックスの例 #インデックスの継承 # すべてのパラメータは親インデックスからコピーされます。 # このインデックス定義でオーバーライドされる可能性があります #index test1stemmed : test1 #{ # パス = /usr/local/sphinx/var/data/test1stemmed # 形態 = stem_ja #}

# 分散インデックスの例 # # これは仮想インデックスであり、直接インデックスを付けることはできません。 # 他のローカルインデックスやリモートインデックスへの参照のみが含まれます #インデックス距離1 #{ #分散インデックス構成 # '分散' インデックス タイプを指定する必要があります # タイプ = 分散

# 検索対象のローカルインデックス # 多数のローカルインデックスを設定できます #ローカル = テスト1 #ローカル = test1stemmed

#リモートエージェント # 複数のリモート エージェントを指定できます # TCP 接続の構文は 'hostname:port:index1,[index2[,...]]' です # ローカル UNIX 接続の構文は '/path/to/socket:index1,[index2[,...]]' です # エージェント = ローカルホスト:9313:リモート1 # エージェント = ローカルホスト:9314:リモート2,リモート3 # エージェント = /var/run/searchd.sock:remote4

# ブラックホール リモート エージェント、デバッグ/テスト用 # ネットワークエラーと検索結果は無視されます # # Agent_blackhole = テストボックス:9312:テストインデックス1,テストインデックス2

# リモート エージェント接続タイムアウト、ミリ秒 # オプション、デフォルトは 1000 ミリ秒、つまり 1 秒です。 # エージェント接続タイムアウト = 1000

# リモート エージェント クエリのタイムアウト、ミリ秒 # オプション、デフォルトは 3000 ミリ秒、つまり 3 秒です。 # エージェントクエリタイムアウト = 3000 #}

# リアルタイムインデックスの例 # # このインデックスに対して INSERT、REPLACE、DELETE をその場で実行できます # MySQL プロトコルを使用します (以下の「listen」ディレクティブを参照) #インデックスRT #{ # RT インデックスを使用するには、'rt' インデックス タイプを指定する必要があります #タイプ=rt

# インデックスファイルのパスとファイル名(拡張子なし) # 必須、パスは書き込み可能である必要があり、拡張子は自動的に追加されます

# パス = /usr/local/sphinx/var/data/rt

# RAM チャンク サイズ制限 # RT インデックスは最大でこの量のデータを RAM に保持し、その後ディスクにフラッシュします # オプション、デフォルトは 32M # #rt_mem_limit = 512M

#全文フィールド宣言 # 複数の値、必須 #rt_field = タイトル #rt_field = コンテンツ

# 符号なし整数属性の宣言 # 複数値 (任意の数の属性が許可されます)、オプション # 符号なし 32 ビット属性を宣言します #rt_attr_uint = gid

# RT インデックスは現在、次の属性タイプをサポートしています。 # uint、bigint、float、タイムスタンプ、文字列 # #rt_attr_bigint = GUID #rt_attr_float = GPA #rt_attr_timestamp = ts_added #rt_attr_string = 著者 #}

###################### ## インデクサー設定 ######################

インデクサー { #インデックス作成プロセスのメモリ使用量制限。オプションのオプション、デフォルトは 32M。 # メモリ制限 (バイト、キロバイト (16384K) またはメガバイト (256M) 単位) # オプション、デフォルトは 32M、最大は 2047M、推奨は 256M ~ 1024M mem_limit = 32M

1 秒あたりの最大 IO 呼び出し数 (I/O スロットル用) # オプション、デフォルトは 0 (無制限) # 1 秒あたりの I/O 操作の最大数。I/O 操作を制限するために使用されます。オプションのオプション。デフォルトは 0 (制限なし) です。 # max_iops = 40

# 最大 IO 呼び出しサイズ、バイト (I/O スロットリング用) # オプション、デフォルトは 0 (無制限) # I/O スロットルに使用される最大許容 I/O 操作サイズ (バイト単位)。オプションのオプション。デフォルトは 0 (制限なし) です。 #max_iosize = 1048576

# xmlpipe2 フィールドの最大長、バイト # オプション、デフォルトは 2M # XMLLpipe2 データ ソースに許可される最大フィールド サイズ # max_xmlpipe2_field = 4M

# 書き込みバッファサイズ、バイト # いくつかの(現在は最大 4 つ)バッファが割り当てられます # mem_limit に加えて書き込みバッファが割り当てられる # オプション、デフォルトは 1M # 書き込みバッファのサイズ (バイト単位)。オプションのオプション。デフォルト値は 1MB です。 #write_buffer = 1M

# ファイルフィールドの最大適応バッファサイズ # オプション、デフォルトは 8M、最小値は 1M # # max_file_field_buffer = 32M }

####################### ## 設定を検索しました ##########################################

検索しました { # [ホスト名:]ポート[:プロトコル]、またはリッスンする /unix/socket/path # 既知のプロトコルは 'sphinx' (SphinxAPI) と 'mysql41' (SphinxQL) です # # 複数の値、複数のリッスン ポイントが許可されます # オプション、デフォルトは以下のように 9312:sphinx および 9306:mysql41 です # # リッスン = 127.0.0.1 # リッスン = 192.168.0.1:9312 # 聞く = 9312 # listen = /var/run/searchd.sock 聞く=9312 #listen = 9306:mysql41

# ログ ファイル、検索実行情報がここに記録されます # オプション、デフォルトは「searchd.log」です # すべての searchd ランタイム イベントがこのログ ファイルに記録されます。 log = /usr/local/sphinx/var/log/searchd.log

# クエリ ログ ファイル、すべての検索クエリがここに記録されます # オプション、デフォルトは空です (クエリをログに記録しません) # すべての検索クエリはこのファイルに記録されます。 query_log = /usr/local/sphinx/var/log/query.log

# クライアント読み取りタイムアウト、秒 # オプション、デフォルトは 5 #ネットワーク クライアントによって要求された読み取りタイムアウト (秒単位)。 read_timeout = 5

# リクエストタイムアウト、秒 # オプション、デフォルトは 5 分 #永続的な接続を使用する場合、2 つのクエリ間の最大待機時間 (単位は秒)。 client_timeout = 300

# フォークする子の最大数 (実行する同時検索) # オプション、デフォルトは 0 (無制限) #サーバーの負荷を制御するために使用される子プロセスの最大数。いつでも、この設定値を超える検索を同時に実行することはできません。制限に達すると、新しい受信クライアントは一時的な失敗 (SEARCH_RETRY) ステータス コードで拒否され、サーバーが最大接続制限に達したことを示すメッセージが表示されます。 max_children = 30

# PID ファイル、検索されたプロセス ID ファイル名 # 必須 #プロセスIDファイル pid_file = /usr/local/sphinx/var/log/searchd.pid

# デーモンが RAM に保持するインデックスごとの一致の最大量 # 警告、クエリごとの制限もあります。SetLimits() API 呼び出しを参照してください。 # デフォルトは 1000 (Google と同様) #デーモンがインデックスごとにメモリ内に保持し、クライアントに返す一致の最大数。 max_matches = 1000

# シームレスな回転、巨大なデータセットを事前キャッシュする場合の回転の停止を防止します # オプション、デフォルトは 1 #インデックスが大量のデータをプリフェッチする必要がある場合に、searchd ローテーションが応答を停止しないようにします。オプションのオプション。デフォルトは 1 (シームレスな回転を有効にします)。 シームレス回転 = 1

# 起動時にすべてのインデックスを強制的にプレオープンするかどうか # オプション、デフォルトは 1 (すべてを事前に開く) #起動時にすべてのインデックス ファイルを強制的に再度開くかどうか。オプションのオプション。デフォルトは 0 (再度開かない) です。 preopen_indexes = 1

# ローテーションが成功したときに .old インデックスのコピーのリンクを解除するかどうか。 # オプション、デフォルトは 1 (リンクを解除します) #インデックスのローテーションが成功した後、拡張子が .old のインデックスのコピーを削除するかどうか。オプションのオプション。デフォルトは 1 (これらのインデックスのコピーを削除します)。 unlink_old = 1

# 属性更新の定期的なフラッシュのタイムアウト、秒 # 個のアップデートがこの頻度で自動的にディスクにダンプされます # オプション、デフォルトは 0 (定期的なフラッシュを無効にする) # UpdateAttributes() が呼び出されたときに、一定期間後に更新がディスクに書き込まれるかどうか # attr_flush_period = 900

# インスタンス全体の ondisk_dict のデフォルト (インデックスごとの値が優先されます) # オプション、デフォルトは 0 (すべての辞書を RAM に事前キャッシュ) #ondisk_dict ディレクティブのグローバルデフォルト値。 オプションのオプション。デフォルト値は 0 (辞書をメモリに事前バッファリングします)。 # ondisk_dict_default = 1

#MVA はプール サイズを更新します # searchd のすべてのインスタンス間で共有され、attr フラッシュが無効になります。 # オプション、デフォルトのサイズは 1M #ネットワーク通信中に許可される最大パケットサイズ。 mva_updates_pool = 1M

# 許可される最大ネットワークパケットサイズ # クライアントからのクエリパケットとエージェントからの応答の両方を制限します # オプション、デフォルトのサイズは 8M #複数値の属性 MVA 更新に使用される記憶域スペースの共有プール サイズ。 max_packet_size = 8M

#クラッシュログのパス # searchd はクラッシュしたクエリを 'crash_log_path.PID' ファイルに記録します (試行します) # オプション、デフォルトは空です (クラッシュログを作成しません) #クラッシュログファイルのパス # crash_log_path = /usr/local/sphinx/var/log/crash

# クエリごとに許可される最大フィルタ数 # オプション、デフォルトは 256 #各クエリに設定できるフィルターの最大数。内部チェックのみに使用され、メモリ使用量やパフォーマンスには直接影響しません。 max_filters = 256

# フィルターごとに許可される最大値数 # オプション、デフォルトは 4096 #単一のフィルターで許可される値の最大数。内部チェックのみに使用され、メモリ使用量やパフォーマンスには直接影響しません。 max_filter_values = 4096

# ソケットリッスンキューの長さ # オプション、デフォルトは 5 #TCP リスニング バックログ リストの長さ。一致しないリクエストはすぐに失敗し、「接続が拒否されました」というエラー メッセージが表示されます。 # listen_backlog = 5

# キーワードごとの読み取りバッファ サイズ # オプション、デフォルトは 256K #各キーワードの読み取りバッファのサイズ。オプションのオプション。デフォルト値は 256K です。 #read_buffer = 256K

# ヒントなしの読み取りサイズ (現在、ヒットの読み取り時に使用されます) # オプション、デフォルトは 32K #サイレント時の読み取り操作のサイズ。オプションのオプション。デフォルト値は 32K です。 # read_unhinted = 32K

# バッチごとに許可される最大クエリ数 (マルチクエリ数とも呼ばれます) # オプション、デフォルトは 32 #各バッチ内のクエリの数を制限します。 OPEN後のクエリボリューム max_batch_queries = 32

# 最大共通サブツリー ドキュメント キャッシュ サイズ (クエリごと) # オプション、デフォルトは 0 (サブツリーの最適化を無効にする) # # subtree_docs_cache = 4M

# 最大共通サブツリー ヒット キャッシュ サイズ (クエリごと) # オプション、デフォルトは 0 (サブツリーの最適化を無効にする) # 最適化に共通のサブツリーを使用するように RAM を制限します。デフォルトでは最適化は行われません。 # subtree_hits_cache = 8M

# マルチプロセッシングモード (MPM) # 既知の値は none、fork、prefork、threads です # オプション、デフォルトは fork # 作業の方法 ワーカー = RT が動作するためのスレッド数

# 分散インデックスのローカル部分を検索するために作成する最大スレッド数 # オプション、デフォルトは 0 で、マルチスレッド検索を無効にすることを意味します # すべての MPM で動作する必要があります (つまり、workers=threads は必要ありません) # # dist_threads = 4

# binlog ファイルのパス; binlog を無効にするには空の文字列を使用します。 # オプション、デフォルトはビルド時に構成されたデータディレクトリです # バイナリログのパス # binlog_path = # ログを無効にする # binlog_path = /usr/local/sphinx/var/data # binlog.001 などがそこに作成されます

# ビンログフラッシュ/同期モード # 0 は毎秒フラッシュして同期することを意味します #1 は、すべてのトランザクションをフラッシュして同期することを意味します # 2 は、トランザクションごとにフラッシュし、毎秒同期することを意味します #オプション、デフォルトは2です # ログ更新モード #binlog_flush = 2

#binlog ファイルごとのサイズ制限 # オプション、デフォルトは 128M、0 は制限なしを意味します #最大ログサイズ # binlog_max_log_size = 256M

# スレッドごとのスタック サイズ。workers=threads モードのみに影響します # オプション、デフォルトは 64K #各スレッドのスタックサイズ。 # thread_stack = 128K

# キーワードごとの展開制限 (dict=keywords プレフィックス検索の場合) # オプション、デフォルトは 0 (制限なし) # キーワードの最大数まで拡張します # 拡張制限 = 1000

# RT RAM チャンクのフラッシュ期間 # オプション、デフォルトは 0 (定期的なフラッシュなし) #RT メモリ内でインデックスがチェックされた時刻 #rt_flush_period = 900

# クエリログファイル形式 # オプション、既知の値はプレーンと sphinxql、デフォルトはプレーンです # クエリログの形式 # query_log_format = sphinxql

# MySQL ネットワーク プロトコル クライアントに返されるバージョン文字列 # オプション、デフォルトは空 (Sphinx バージョンを使用) #MYSQL バージョン #mysql_version_string = 5.0.37

# 信頼できるプラグインディレクトリ # オプション、デフォルトは空 (UDF を無効にする) # プラグインディレクトリ # plugin_dir = /usr/local/sphinx/lib

# デフォルトのサーバー全体の照合順序 # オプション、デフォルトは libc_ci # リンク文字セット #collat​​ion_server = utf8_general_ci

# libc ベースの照合順序のサーバー全体のロケール # オプション、デフォルトは C # 照合オプション #collat​​ion_libc_locale = ru_RU.UTF-8

# スレッド化サーバー ウォッチドッグ (workers=threads モードでのみ使用) # オプション、値は 0 と 1、デフォルトは 1 (ウォッチドッグがオン) # サーバー監視プロセスを有効にするかどうか #ウォッチドッグ = 1

# SphinxQL 互換モード (従来のカラムとその名前) # オプション、デフォルトは 0 (SQL 準拠の構文と結果セット) #sphinxql 互換モード #compat_sphinxql_magics = 1 }

# --eof--

インデックスを作成: /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.confindex1

インデックス作成のための継続的なサービス: /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all --rotate

インデックスサービスを開始してPHPクライアントを利用できるようにします /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

PHPテストファイルを作成する

  1. $s = new SphinxClient;
  2. setServer("localhost", 9312);
  3. $s->setMatchMode(SPH_MATCH_ANY);
  4. $s->setMaxQueryTime(3);
  5. $result = $s->query("test");#Query
  6. print_r ($result);
  7. ?>
コードをコピー

実行するだけです

searchd コマンド: 強制的に止める: searchd --config /home/myuser/sphinx.conf –stop

静かに停車: searchd --config /home/myuser/sphinx.conf –stopwait

ステータス: searchd --config /home/myuser/sphinx.conf –status

PIDファイルを指定 searchd --config /home/myuser/sphinx.conf --pidfile /home/myuser/sphinx.pid

コンソールモードで開始します: searchd --config /home/myuser/sphinx.conf –console

指定されたインデックスのみを開始します searchd --index myindex

いくつかの辞書を生成するためのツール ソフトウェア: Spelldump

一部の転送およびその他のツール用のindextoolソフトウェア

検索文字列ルール: * 演算子 OR: こんにちは | 世界

* 演算子は次のとおりではありません: こんにちは世界 ハロー!ワールド

* フィールド検索演算子: @title こんにちは @body world

* フィールド位置制限修飾子 (バージョン 0.9.9-rc1 で導入): @body[50] こんにちは

* 複数フィールド検索演算子: @(タイトル,本文) hello world

* 全フィールド検索演算子: @* こんにちは

* フレーズ検索演算子: 「ハローワールド」

* 近接検索演算子: 「ハローワールド」~10

* クォーラム一致演算子: 「世界は素晴らしい場所です」/3

* 厳密順序演算子 (別名「前」演算子): aaa

* 正確なフォーム修飾子 (バージョン 0.9.9-rc1 で導入): 雨が降っています =猫と =犬

* フィールド開始およびフィールド終了修飾子 (バージョン 0.9.9-rc2 で導入): ^ハローワールド$

* NEAR、一般化された近接演算子 (バージョンで導入) 2.0.1 ベータ版): こんにちは NEAR/3 世界 NEAR/4 「私のテスト」

* SENTENCE 演算子 (バージョン 2.0.1 ベータで導入): すべての SENTENCE 単語 SENTENCE 「一文で」

* PARAGRAPH 演算子 (バージョン 2.0.1 ベータで導入): 「ビル・ゲイツ」パラグラフ「スティーブ・ジョブズ」

* ゾーン制限演算子: ZONE:(h3,h4)はこれらのタイトルのみ

式、サポート関数など。日付はタイムスタンプを使用します(MYSQLストレージエンジンとして使用しない場合は使用されないようです) * 算術演算子: +、-、*、/、%、DIV、MOD * 比較演算子: =、=、 * ブール演算子: AND、OR、NOT * ビット演算子: &、| *ABS() *BIGINT() *CEIL() *COS() * CRC32() *日() *EXP() *床() *ジオディスト() *IDIV() *もし() *で() * 間隔() *LN() *LOG10() *LOG2() *MAX() *MIN() *月() *今() *捕虜() * SIN() * SINT() *SQRT() * 年() * 年月() * 年月日()

クライアントメソッドの紹介:

  1. include_once 'sphinxapi.php';

  2. $s = new SphinxClient();
  3. $s->setServer("localhost", 9312);
  4. $s- >SetConnectTimeout ( 1 );// リンク タイムアウトを設定します

  5. /*

  6. $s->AddQuery();// リスト クエリ
  7. $s->RunQueries ();// 実行list query
  8. $s->ResetFilters();//フィルター条件をクリア
  9. $s->BuildExcerpts($docs, $index, $words);//概要を生成
  10. $s->BuildKeywords($query , $index, $hits);//キーワードを生成します
  11. $s->GetLastError();//エラー
  12. $s->GetLastWarning();//警告
  13. $s->FlushAttributes();/ /Indexハードディスクにフラッシュされます
  14. $s->IsConnectError();//リンクエラー
  15. $s->ResetGroupBy();//グループをリセット

  16. $s->SetFieldWeights ( array('sub_title'=>1));//最小の重みは 1 です

  17. $s->SetIDRange($min, $max);//ID 範囲
  18. $s->SetIndexWeights(array('test1 '=>1));//インデックスの重み
  19. $s->Status();//サービスが利用可能かどうか
  20. $s->UpdateAttributes($index, $attrs, $values);//更新ハードディスク インデックス
  21. */
  22. /*
  23. SPH_MATCH_ALL、すべてのクエリ ワードと一致します (デフォルト モード);
  24. SPH_MATCH_ANY、任意のクエリ ワードと一致します;
  25. SPH_MATCH_PHRASE、完全一致を必要とするフレーズとしてクエリと一致します;
  26. SPH_MATCH_BOOLEAN、クエリと一致しますブール式として (セクション5.2「ブールクエリ構文」を参照);
  27. SPH_MATCH_EXTENDED、Sphinx 内部クエリ言語の式としてクエリに一致します (セクション5.3「拡張クエリ構文」を参照)。0.9.9 以降、これは次のようになりました。 SPH_MATCH_EXTENDED2 に置き換えられ、追加機能とパフォーマンスの向上を実現します。ID は、Sphinx とそのコンポーネント (API を含む) がアップグレードされても引き続き互換性を維持するために保持されます。
  28. SPH_MATCH_EXTENDED2 は、拡張の 2 番目のバージョンを使用してクエリを照合します。マッチングモード.
  29. SPH_MATCH_FULLSCAN, m
  30. */
  31. $s->setMatchMode(SPH_MATCH_ANY);//マッチングモード
  32. $s->setMaxQueryTime(3);//クエリタイムアウト
  33. //$s->SetSelect( $select ); //返されたフィールドを設定します
  34. /*
  35. $cl->SetSelect ( "*, @weight+(user_karma+ln(pageviews))*0.1 AS myweight" );
  36. $cl->SetSelect ( " exp_years,給与_gbp* {$gbp_usd_rate} AS給与_米ドル,
  37. IF(年齢>40,1,0) AS 40歳以上" );
  38. $cl->SetSelect ( "*, AVG(価格) AS 平均価格" );
  39. */
  40. /*

  41. $cl->SetGroupBy ( "category", SPH_GROUPBY_ATTR, "@count desc" );
  42. $cl->SetGroupDistinct ( "vendor" );
  43. ==
  44. SELECT id、weight 、すべての属性、
  45. COUNT(DISTINCT ベンダー) AS @distinct、
  46. COUNT(*) AS @count
  47. FROM products
  48. GROUP BY category
  49. ORDER BY @count DESC
  50. */
  51. //$s-> ;SetGroupBy ( $ groupby, SPH_GROUPBY_ATTR, $groupsort );//概要
  52. //$s->SetGroupDistinct ( $distinct );//重複しないフィールドを設定します

  53. $s-> SetArrayResult ( true ) ;//結果に ID があるかどうか

  54. /*

  55. SPH_SORT_RELEVANCE モード、関連性によって降順に並べ替えます (最もよく一致するものが最初);
  56. SPH_SORT_ATTR_DESC モード、属性によって並べ替えます降順 (大きい属性値が最初);
  57. SPH_SORT_ATTR_ASC モード、属性によって昇順 (小さい属性値が最初) で並べ替えます;
  58. SPH_SORT_TIME_SEGMENTS モード、時間セグメント (最後の時間/日/週/月) を降順で並べ、次に関連性によって降順に並べ替えます。
  59. SPH_SORT_EXTENDED モード、SQL に似た列の組み合わせによって ASC/DESC 順に並べ替えます。
  60. SPH_SORT_EXPR モード、算術式によって並べ替えます。
  61. */
  62. // $s->SetSortMode ( SPH_SORT_EXTENDED, $ sortby );// ソート モード

  63. /*

  64. $s->SetOverride($attrname, $attrtype, $values);
  65. $s- >ResetOverrides();*/
  66. /*
  67. $s->SetRetries($count);//設定が失敗した場合は再試行
  68. $s->SetRankingMode($ranker);//設定されたランキング モードは SPH_MATCH_EXTENDED2 に適用されますsearch

  69. < p>// 3 番目のパラメータが true の場合、$attribute!=$value と同等で、デフォルト値は false です
  70. $s->SetFilter ('target_type', $filtervals );//フィルタリング、値リストを設定します
  71. $s->SetFilterFloatRange($attribute, $min, $max);//浮動範囲
  72. $s->SetFilterRange($attribute, $min, $max);/ /指定範囲
  73. $s->SetGeoAnchor($attrlat, $attrlong, $lat, $long);
  74. */
  75. //link
  76. //$s->SetFilter ( 'target_type', array(1), true );

  77. < ;p>$s->SetLimits (0, 10);//表示数量: 開始数量の最大右オフセット
  78. $result = $s->query("good", "チーム");// クエリ

  79. print_r($result);

コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート