2017-01-25 4 views
0

私はMySQLの全文検索で多くの実験をしていますが、それが私のものなのかどうかは本当にわかりません。私はフルテキスト検索が正しいですか?

フルテキスト検索を行う前に、私はLIKEの検索を使用していましたが、これは精度は非常に高いものの、効率は低下しています。フルテキスト検索は効率的であり、良い結果を得ることができます。

valueというテーブルの列に全文検索を適用します。この列には、名字、姓、研究関心、またはあなたが住んでいる場所など、非常に異なる種類の情報が含まれている場合があります。

この列にLIKE検索を実行すると、実際には良い結果が得られます。たとえば、"Roger Federer", when I type Rog Fed Roger Johnsonなどを検索しています。

フルテキスト検索では、私はMySQLを使用しています。私が使用するモードはブールです。ブールモードでは、+-*のような多くのオプションがあります。 +は、私が探している言葉がでなければならないことを意味します。が存在します。全文検索で同じクエリが適用される場合:

SELECT * FROM Mytable WHERE MATCH(value) AGAINST('+rod' '+fed' IN BOOLEAN MODE) 

明らかに、このクエリは結果を返すことができません。それは正確にrodfedを探しているからです。この問題を克服するために、私は以下のようにアスタリスクを使用しています:

SELECT * AGAINST MATCH(値)( '*ロッドは' '* BOOLEAN MODEで' 供給)mytableはFROM

これは正常に動作しますが、それはまた見つけました結果は次のようになります。

Roger Federer 
Federer Johnson 
John Roger 

私の質問は、ユーザーが適切なキーワードを入力して検索することは決して確実ではありません。彼らは言葉の半分を入力し、彼らが望む結果を見ることを期待するかもしれません。そのような場合、+演算子を使用することはできません。なぜなら、私はあなたにすべきなのです*。このような場合は、フルテキスト検索を使用することをお勧めしますか?

答えて

関連する問題