MySQL フルテキスト検索

今日は遅いを最適化するために果たしました SQL 属の応用

SELECT * FROM 'table' WHERE `field` LIKE '%word%'

どこに問題が今ここにあります – 最後の部分 '%語%’ さらにより特定の文字で % 単語の前に, これを行います. ワイルドカード記号 % ,任意の値の前に, 直接直接遅くに私たちのクエリになります, この方法でアプリケーションがインデックスフィールドを使用するために私たちを停止するため. いつものように決定, しかし、必ずしも明確ではない😆全体 MySQLの 彼らは、この問題に対する解決策を持っています 全文検索 インデックス作成フィールド. どのようにフィールドを変更しないと、書かれたドキュメントをたくさん持っています, しかし、急いではトップの要求を変更する方法について説明します, 我々は最終的にはほとんどドラマに取得しますので、. 上記該当全文フィールドとしてSledka, アプリケーションは、タイプの変更でなければなりません:

SELECT * FROM `table` WHERE MATCH (field) AGAINST ('word')

構造が明らかであると不要な議論を必要としないので、. 上記のクエリは、発効します, 単語の場合, あなたは、少なくとも要求を行うために 4 シンボル, デフォルト値は, 変更したい場合は、値を指定する必要があります。, която желаете в my.cnf в частта [mysqldを] 宣言 ft_min_word_len= 3または 2, 1 не е добър избор очевидно 😉 . あなたは値を変更して、テーブル上の修復を行うためのMySQLサーバーの必要性を再起動した後, 新しいインデックスを作成するためには、発効します. これまでのところ、すべて明確に: 変更を行います, リセット, rebildvamインデックスと私の要求とリターンを行います 0 順序でチェック😀

SHOW VARIABLES

私は値することを参照してください。, 私は力に求めてきました, インデックスを再度rebildvam – 同じ結果. 不快🙄, 非常に不快. ここから、その上に大きなのろいを始め、かなりあった小屋😀に鍵を掻きます, 非常に興味深いです. 全体的に, 私はどの道を知らないドキュメントを読み始め、興味深いの通路に来ました

Such a technique works best with large collections (実際には, それは慎重にこの方法をチューニングしました). 非常に小さなテーブルの場合, 単語分布が十分にその意味値を反映していません, このモデルは時々奇妙な結果が発生する可能性があり. 例えば, 単語 "MySQLは"先に示した物品のテーブルのすべての行に存在しているものの、, 単語の検索は結果を生成しません

ГРЕДА 😳 Дам табличката ми беше малка – しかし、それはテストでした. 大きなテーブルの上で我々のアプリケーション 2 000 000 注文して、そこのものが眠っていました. まあ今明確な問題. 明確な判断を下すために、, 私は簡単に言及します, それは、フルテキスト検索をサポートしています 3 アドバンストモード BOOLEAN , EXPRESSIONS そして 自然言語 デフォルトでは、最後の仕事として、. ドキュメントをチェックすることができますモードについて, 私はに説明します 2-3 BOOLEAN言葉、それがキーであるため、. それは、このような論理演算子をサポートしており、, OR , NOTなど、人気のフレーズといくつかの魔法を行うことができます, 1を持っています, 他などありません. メンテナンスとシンボル *, ワイルドカード記号に相当します % これは便利です😉, 検索語は、長さ未満である場合 ft_min_word_len または小さなトレー ;). 約と少なくとも私には表 100 オーダーは完璧な仕事をしていません. 参照のみ残して、要求を完了:

SELECT * FROM `table` WHERE MATCH (field)
AGAINST ('*word*' IN BOOLEAN MODE)

ここに私たちのインデックス作成がワイルドカード文字で動作するかどうかの瞬間が来ます – 答えは私にはわからないです. Принципно мисля, че да, защото не е казано друго в документацията, но в документацията очевидно не се казват или показват много неща 😀

Zemantaの強化されたことにより、

2 コメント

    1. Е при големи таблици вече има други решения 😉 partitions да речем или други механизмни за fulltext search като Sphinx

返信を残します

あなたのメールアドレスが公開されることはありません. 必須フィールドは、マークされています *

アンチSPAM *