1

アプリケーションを構築しているときに、解決できない難しい問題に遭遇しました。次のようないくつかのキーワードを含むテーブルがあります。

構造:

id  keyword
1   iphone 4
2   iphone 4 16gb black
3   iphone 3gs
4   iphone 5 32gb white
5   macbook pro 13" late 2009
6   macbook air 15"
...

現在、キーワードを使用してそのデータベースから結果を取得しようとしています。たとえば、私は を探していiphone 4 blackます。私はこの方法でそれをやろうとしました: キーワードのような%iphone%4%black、しかし、問題のキーワードの並べ替えという問題がありlikeます。ということで、mysqlの全文検索をしてみました。しかし、この検索で​​は、たとえばiphone 3gsを検索するとme も返されiphone 4ます。

その問題を解決する方法はありますか?

4

4 に答える 4

1

複数の LIKE 条件を一緒に使用します。

WHERE keyword LIKE '%iphone%' AND keyword LIKE '%4%' AND keyword LIKE '%black%'

その後、最終的には、実際に「ポイント」をさまざまな一致に関連付けて、ORDER BY で派手な IF を使用して結果を並べ替えることができます。

于 2012-07-17T14:52:53.593 に答える
1

これを試して:

where keyword like '%iphone%'
and keyword like '%4%'
and keyword like '%black%'
于 2012-07-17T14:52:00.767 に答える
0

フルテキストオプションをどのように使用しましたか?クエリにリテラルが必要ですか?

ただし、試してみたので、ブールオプション(http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html)の使用を検討してください。

これにより、検索に含めるか除外する必要がある単語を指定できます。あなたの場合、すべてを含めたいので、「+iphone+4」のような検索文字列が必要です。これをクエリに直接配置する必要があります。

where match(keyword) against ('+iphone +4' in boolean mode)
于 2012-07-17T15:04:22.143 に答える
0

これを試すことができます:

WHERE keyword LIKE %iphone% AND keyword LIKE %black%
于 2012-07-17T14:50:30.560 に答える