2016-10-03 3 views
2

検索語= ['ISBN番号on site'] 変数(列):文、MySQLテーブル内。それは多くの異なる文章で構成されています。ファジーを使用してSQLで文を検索する方法は?

私が探したい文章は です "オートリンク機能は、Googleの最新のツールバーに付属しており、サイト上で本のISBN番号を見つけたら、ウェブページのリンクをAmazon.comに提供します。私は、次のステートメントを使用する場合

しかし、:

SELECT * FROM testtable 
where Sentence like "%ISBN number on site%" ; 

を私は結果を得ることができないのです。これは、検索用語(「サイト上のISBN番号」)が文と比較して1つの単語(「the」)がないためです。

私が欲しい文章を得るために私の声明を変更するには?ありがとう。 我々は検索語= [「サイト上のISBN番号を」]変更しないことを想定し

+1

MySQLでフルテキスト検索を使用してみるとよいでしょう。 –

答えて

4

これは簡単な質問ではありません。あなたの最善の策は、何らかのタイプのfulltext searchを使うことです。全文検索ではストップワード(検索から除外された単語、つまりtheのような単語)を構成することができます。また、最小の単語長制限も指定できます(特定の文字数未満の単語も検索から除外されます)。

あなたは、単に

SELECT * FROM testtable 
WHERE MATCH (sentence) 
AGAINST ('ISBN number on site'); 

を使用する場合は、次にMySQLがないだけで、あなたが探していた値を持つレコードが、唯一の言葉のいくつかを持っているレコード、および異なる順序で返されます。あなたが意志を示した1おそらく最高ランクのものの1つになるかもしれませんが、それが最高ランクのものであるという保証はありません。

あなたがBoolean fulltext searchを使用し、存在するすべての検索語を持っているレコードだけを返すようにMySQLを強制するために、すべての検索ワードに+を付加することもできます。それがオンになっている

SELECT * FROM testtable 
WHERE MATCH (sentence) 
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE); 

しかし、onは(ストップワードのいずれかである必要がありデフォルトでは、リストをstipword)またはその検索式から省略されなければならない最低限のワード長は、(あなたがどんな結果)戻って取得しないことを短くする必要があります:これは検索式の変更が必要であることを私は知っている

SELECT * FROM testtable 
WHERE MATCH (sentence) 
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE); 

しかし、これはあなたに最高を得るでしょう結果はMySQLの組み込み機能を使用しています。

別のフルテキスト検索エンジン(sphinxなど)を使用して検索を行うこともできます。

+0

ありがとうございました!私はあなたの答えから多くを学んだ。 – bob90937

+0

誰でも答えが必要な場合。 ALTER TABLE 'テストテーブル' ADD FULLTEXT( 'sentence'); SELECT * FROM testtable WHERE MATCH(文) 反対( '+ ISBN +番号+サイト'ブーレーンモード); – bob90937

1

試してみてください。

SELECT * FROM testtable where Sentence like '%ISBN number on%site%' ; 

ワイルドカードは、あまりにも、文字列の途中で行くことができます。

+0

一般検索式にワイルドカードをどこに置くべきか、どのように知っていますか? – Shadow

+0

ありがとうございました。それを行うための他の方法はありますか?検索語= [[サイト上のISBN番号]]を変更しないと仮定します。これは検索用語を変数として使用するためです。検索用語 – bob90937

+0

@ Shadowをハードコードすると、各領域を1つに置き換えることはできません。それはあなたに私が推測する長い道のりを得るだろう。注文がシフトし始めるまで。次に、スペースに基づいて文字列を分割し、それぞれの単語を別個の文として追加する必要があります(どこに... AND ... AND ...) – Jens

関連する問題