2009-09-01 18 views
2

I持っている理由、これは完全一致のみを返します全文検索では、唯一の正確な返し一致する

select c.id 
from ".TBL_COUPONS." as c 
inner join ".TBL_BUSINESS." as b 
on c.business_id = b.business_id 
inner join ".TBL_BLOCATION." as l 
on c.business_id = l.business_id 
where 
(match(c.name) against ('$search') 
    or 
match (b.name,b.category,b.subcat) against ('$search')) 
and l.zip = '$zip' 

次のスクリプト?たとえば、私がlocksmithを検索すると何も出てこない。 しかし、もし私がlocksmithsを検索すると、私は2つの結果を得るでしょう。 (両方の検索に$ zip = '75061'が含まれています)

答えて

2

一つの方法は、(ワイルドカードでの最後の数文字を置き換えるとMATCHを行うことです)AGAINSTブールモードの

検索用語「鍵屋」とは、「鍵屋*」にPHPで変更する必要がありますそして、あなたのコードは、元の検索語の単語からなど、「INGの」、「ED」s 'を削除し、ワイルドカードを追加する必要があり、一般的な目的のために、この

match(c.name) against ('$search' IN BOOLEAN MODE) 

のようなもの*になります終わり。

0

テーブルはfulltext restrictionsでOKですか?

+0

限り、私ははいと言うことができます。 –

+0

はLatin 1マルチバイト文字セットですか? –

0

これはフルテキストの一致の仕組みです。複数形についてはわかりませんが、単語全体に一致します。問題は時々起こります。場合によっては、生成された提案が表示されたときに「あなたは...ですか?」というメッセージが表示され、この問題を解決しようとしています。それを行うには

+1

それではLIKEを使うべきですか?私は変種が必要です。 –

関連する問題