1

MySQL データベースで基本的な全文検索を実行しようとしています。使用しているテーブルは次のとおりです。

テーブルが削除されました

私は以前に全文検索を使用したことがないので(またはそのことについては索引付けを行いました!)、どんな入力でも大歓迎です。

ありがとう

編集:

FULLTEXT検索が遅いと思われるため、使用することを選択しましLIKEた-JavaScriptのオートコンプリートタイプのものであるため、これらが非常に多く実行されます。これを使用することLIKEは実行可能なオプションですか? 私はそれに対して忠告されました。LIKE(実際の質問に対処するのではなく、すべての回答が使用するように言っているため、これを取り上げます)

4

4 に答える 4

2

MySQL 全文検索は機能が制限されており、検索が比較的遅くなります。このタイプのクエリには、SolrSphinxなどの外部の全文検索エンジンを使用することをお勧めします。私は Solr には詳しくありませんが、Sphinx の場合は、構成ファイルの enable_star オプションと共にサポートされているプレフィックス インデックスを使用できます。

MySQL FT を Sphinx に置き換える方法の例を次に示します。また、Sphinx をファセット検索、関連ドキュメント検索、その他の便利な機能に使用することもできます。

お役に立てれば。

于 2012-10-18T09:47:29.170 に答える
1

コマンドを使用LIKEし、パーセント記号 ( %) をワイルドカードとして使用します。

SELECT user_id, username, first_name, last_name 
FROM users 
WHERE (username LIKE 'Sav%') 
   OR (email LIKE 'Sav%') 
   OR (first_name LIKE 'Sav%') 
   OR (last_name LIKE 'Sav%');
于 2012-10-18T02:06:35.713 に答える
1

ここで比喩を混ぜています。正当な理由で FULLTEXT を使用したい場合は、LIKE の構文を使用します。

ワイルドカードを使用せずに単純な「savo」を検索してみて、それが受け入れられるかどうかを確認してください。

ところで、Mysql FULLTEXT 検索の 2 つの大きな落とし穴:

  1. 戻ってcnfをいじらない限り、入力された4文字未満には反応しません(4文字だと思います。これを確認する必要があります)

  2. 結果セットの数が使用可能な合計行数の 50% を超える場合、検索が失敗したとみなされ、何も返されません。12行に対してのみテストする場合は覚えておく価値があり、それらすべてに単語が含まれていると言いtestます。痛い;)

于 2012-10-18T10:03:23.153 に答える
-1

私はあなたがこのようなことをしようとしていると思います:

 select * from users where (
username like ('Sav%') 
or email like ('Sav%') 
or first_name like ('Sav%') 
or last_name like ('Sav%') );
于 2012-10-18T02:10:15.513 に答える