0

セクションと呼ばれるテーブルを持つデータベースがあります。その中には、文字列ごとに 3 つのエントリを持つフルテキスト インデックスを持つ head というフィールドがあります。2 つのエントリにはオートバイという単語があり、1 つのエントリにはオートバイがあります。「オートバイ」という用語が検索の場合、3 つすべてを返す方法が見つからないようです。

私が試してみました

SELECT * FROM sections
     WHERE MATCH (head) AGAINST ('Motorcycles')

ただし、複数のエントリのみを返します。私も試しました。

SELECT * FROM sections
   WHERE head like '%motorcycles%'

ただし、それは複数のエントリのみを返します。「オートバイ」に基づいて3行すべてを返す方法はありますか?

4

3 に答える 3

1

ブールモードを試しましたか?

where match (head) against ('+ Motorcycle*' in Boolean mode)

詳細はこちら

where句に余分な「s」があります:

 SELECT * FROM sections WHERE head like '%motorcycle%'
于 2013-03-30T18:07:33.670 に答える
0

あなたの質問があなたが与えた特定のオートバイの例よりも一般的であると仮定すると... SQLで直接制約を緩和できる方法を知りません(入力を前処理するためのストアドプロシージャなし)。入力を正規表現で前処理して、単語を複数形にする文字を削除/置換することをお勧めします。次に、単語の単数形で示した方法で like を使用します。

于 2013-03-30T18:09:53.047 に答える