0

ここに画像の説明を入力してください

こんにちは、みんな、

XAMMPのパブリケーションと呼ばれるDBのクラシックと呼ばれるこの単純なテーブルを作成しました。理解できたと思った著者名をMATCHAGAINSTで検索しようとしています。

また、必要に応じて、作成者列とタイトル列の両方で、テーブルにFULLTEXTインデックスが付けられていることを確認しました。テーブルもMyISAMタイプです。

これを試してみましたが失敗しました。

SELECT author FROM classics WHERE MATCH(author)AGAINST('Charles');

チャールズが著者の列に存在している必要があることはわかっています。ご覧のとおりですが、行が返されません。

今、私がそれを他の著者に書き直すと、それは機能します

SELECT author FROM classics WHERE MATCH(author)AGAINST('jane');

これが私がジェーンで得たものです...

ここに画像の説明を入力してください

よくわかりませんが、著者だけを検索するのではなく、インデックスに登録した両方のフィールドをクエリに含める必要があったようです。これは正しいですか、そしてなぜ私がチャールズを返してもらうことができないのか誰かが知っていますか?

どうもありがとう!。

4

1 に答える 1

1

「charles」が行の50%に表示されるため、これらの行は返されません。これは、MySQL全文検索の十分に文書化された制限です。

この制限を回避したい場合は、を使用できますBOOLEAN MODE

マニュアルからの関連する抜粋は次のとおりです。

テーブルの行の半分に一致する単語は、関連するドキュメントを見つける可能性が低くなります。実際、無関係なドキュメントがたくさん見つかる可能性があります。私たちが検索エンジンでインターネット上で何かを見つけようとしているとき、これがあまりにも頻繁に起こることを私たちは皆知っています。この理由から、単語を含む行には、それらが出現する特定のデータセットに対して低い意味値が割り当てられます。特定の単語は、あるデータセットでは50%のしきい値に達する可能性がありますが、別のデータセットでは到達しない可能性があります。

50%のしきい値は、最初に全文検索を試してどのように機能するかを確認するときに重要な意味を持ちます。テーブルを作成し、そのテーブルに1行または2行のテキストのみを挿入すると、テキスト内のすべての単語が少なくとも50%で発生します。行の。結果として、検索は結果を返しません。必ず少なくとも3行、できればそれ以上の行を挿入してください。50%の制限を回避する必要があるユーザーは、ブール検索モードを使用できます。セクション12.9.2「ブール全文検索」を参照してください。

于 2012-05-14T16:46:33.287 に答える