0

定期的にあなたのスレッドを読んでいますが、これは私の最初の投稿です。

私が直面している問題は、私のテーブルの FULLTEXT インデックスに関係しています。私が従った手順を以下に示します。

CREATE TABLE dost(
  author VARCHAR(30),
  title VARCHAR(40),
  isbn SMALLINT NOT NULL)ENGINE MyISAM;

ALTER TABLE dost ADD FULLTEXT(author);

ALTER TABLE dost ADD FULLTEXT(author);

ALTER TABLE dost ADD FULLTEXT(author);

テーブルにデータを挿入すると、次のようになります。

author                 title                               isbn

Fyodor Dostoyevsky     Poor Folk                           225125
Fyodor Dostoyevsky     Crime and Punishment                121320
Fyodor Dostoyevsky     The Gambler                         124239
Rowan Williams         Dostoyevsky                         083409
Joseph Frank           Dostoyevsky: A Writer In His Time   089823

この問題は、作成者列に対して MATCH AGAINST コマンドを使用しようとすると発生します。より具体的には、入力すると

SELECT author,title FROM dost WHERE MATCH(author) AGAINST('Williams');

期待どおりの結果が得られます (Rowan Williams Dostoyevsky ) が、同じ手順に従って AGAINST 入力を 'Williams' から 'Dostoyevsky' に変更すると、結果として空のセットが出力されます。一方、タイトル列の FULLTEXT インデックスは正常に機能します。この問題が発生する理由はありますか?

御時間ありがとうございます!

4

1 に答える 1

0

いわゆる自然言語検索を行っています。このタイプの検索では、行の 50% 以上にある単語は「共通値」として無視されます。 参照

この制限が望ましくない場合は、代わりに次のようにブール型の全文検索を行う必要があります。

SELECT author,title FROM dost WHERE MATCH(author) AGAINST('+Dostoyevsky' IN BOOLEAN MODE);
于 2013-11-07T19:37:00.590 に答える