1

// テーブルを作成

CREATE  TABLE `TEST_FULL_TEXT_SEARCH` 
(
    `ID` INT NOT NULL AUTO_INCREMENT,
    `TEST` VARCHAR(45) NULL,
    PRIMARY KEY (`ID`),
    FULLTEXT INDEX `FULL_TEXT` (`TEST` ASC) 
)
ENGINE = MyISAM;

// いくつかのレコードを挿入

INSERT INTO `TEST_FULL_TEXT_SEARCH` 
SELECT 1, 'vikas kumar gupta' UNION ALL
SELECT 2, 'kratika gupta' UNION ALL
SELECT 3, 'kratika sharma' UNION ALL
SELECT 4, 'kratika vikas kumar gupta' UNION ALL
SELECT 5, 'kratika shukla' UNION ALL
SELECT 6, 'chetan kastwar' UNION ALL
SELECT 7, 'kratika kastwar' ;

// 選択クエリに移ります

SELECT * FROM TEST_FULL_TEXT_SEARCH
WHERE MATCH(test) 
AGAINST('kratika' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION );

// または

SELECT * FROM TEST_FULL_TEXT_SEARCH
WHERE MATCH(test) 
AGAINST('kratika' WITH QUERY EXPANSION);

// 出力

1   vikas kumar gupta
4   kratika vikas kumar gupta
3   kratika sharma
5   kratika shukla
2   kratika gupta
  1. 結果セットで「 kratika kastwar 」が選択されないのはなぜですか?
  2. 最初になぜ「vikas kumar gupta」なのか

// Boolean モードで検索します

SELECT * FROM TEST_FULL_TEXT_SEARCH
WHERE MATCH(test) 
AGAINST('kratika' IN BOOLEAN MODE);

// 出力

2   kratika gupta
3   kratika sharma
4   kratika vikas kumar gupta
5   kratika shukla
7   kratika kastwar
  1. なぜ「kratika kastwar」があるのですか?

// boolean モードでクエリを展開せずに検索します

SELECT * FROM TEST_FULL_TEXT_SEARCH
WHERE MATCH(test) 
AGAINST('kratika' IN NATURAL LANGUAGE MODE);

// 出力

No result found

リストで「 kratika kastwar」が選択されていない理由を明確にしてください

// 編集済み

vikas kumar guptaIN NATURAL LANGUAGE MODE WITH QUERY EXPANSION またはkratika関連の結果でWITH QUERY EXPANSIONはなく、最初のランクで表示されるのはなぜですか?

4

1 に答える 1

0

ランニング

SELECT ID, TEST, MATCH(TEST) AGAINST('kratika' IN NATURAL LANGUAGE MODE ) AS MT FROM TEST_FULL_TEXT_SEARCH 
WHERE MATCH(TEST) 
AGAINST('kratika' IN NATURAL LANGUAGE MODE  );

行の少なくとも 50% に「kratika」という単語が存在するため、結果セットは空です。

http://dev.mysql.com/doc/refman/5.5/en//fulltext-natural-language.htmlを確認してください。

このような手法は、大規模なコレクションで最も効果的です (実際、この方法は慎重に調整されています)。非常に小さなテーブルの場合、単語の分布はそのセマンティック値を適切に反映していないため、このモデルでは奇妙な結果が生じることがあります。

そして、彼らはいくつかのサンプルを持っています。

于 2013-01-25T10:45:44.050 に答える