0

私はテーブルの次の構造を持っています [id - title - tag - ..] 私は次を達成したい:

表に「仕事が好きで、趣味です」というタイトルのレコードがある場合、文から 2 つの単語を含むクエリが送信された場合、この文を選択する必要があります。例: 「趣味が好き」というクエリ。たとえば、「I love my job」ではなく、上記のタイトルを付ける必要があります。少なくとも、最初にクエリ キーワードに一致する単語が多く、次に一致する単語が少ない文。

テーブルのタイトル列でこの検索を行うにはどうすればよいですか?

説明が明確でない場合はお詫び申し上げます...明確にするお手伝いをさせていただきます。

皆さん、ありがとうございました

4

4 に答える 4

2

これを試して :

SELECT title FROM your_table WHERE title LIKE '%love%' AND title LIKE '%hobby%'

于 2012-07-31T07:05:28.293 に答える
1

mysqlに組み込まれている全文検索機能を調べてください。ブールモードでは、クエリをに変換して、+love +hobby全表スキャンなしで結果を返すことができます。これはmyisamテーブルでのみ機能することに注意してください。myisamは外部キーやトランザクションなどをサポートしていないため、インデックス付きデータをメインテーブルから移動する必要がある場合があります。

より高度なフリーテキストの索引付けについては、sphinx(mysqlのルックアンドフィールインターフェイスも備えています)またはsolrを試すことができます。

于 2012-07-31T07:10:00.710 に答える
1

MyISAMまたはinnoDBを使用している場合は、MySQL全文検索を使用できます。

SELECT * FROM table_name WHERE MATCH (title) AGAINST ('love hobby' IN BOOLEAN MODE);

また、個々の単語も検索します。

これを読んでください:https ://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

于 2012-07-31T07:10:42.427 に答える
0

MySQLも使用できますREGEXP

SELECT title FROM table WHERE title REGEXP ' love .+ hobby';

単一の文字列として使用している場合は、次のことを試してください。

SELECT title FROM table WHERE title REGEXP REPLACE('love hobby', ' ', '.+ ');
于 2012-07-31T07:09:26.710 に答える