0

私は3列でmysqlを使用して全文検索を使用しています。次のようなデータを想定します。

  1. Row1には、「GreaterNoidaExpressway」と「Sector91」の2つの列が含まれています。
  2. Row2には、「HoChiMinhMarg」と「GreaterKailash2」の2つの列が含まれています。
  3. Row3には、「Rohini」と「Sector91」の2つの列が含まれています

さて、

SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('Greater Noida'); 

上記のクエリでは、「Greater」と「Noida」でマッチングが行われるため、最初の2行が表示されます。そして、「グレーター」は、Row2の「グレーターカイラッシュ」にもあります:|

「スペース」での検索をブロックし、グレーターノイダを「スペース」で区切られていない1つの検索フレーズと見なす方法はありますか?

これは、実際のデータが非常に膨大になるため、ノイズのフィルタリングに役立つため、非常に便利です。

前もって感謝します!

編集: 別の問題は、セクター91を検索すると、セクターのみが検索され、91が無視されることです(これは4文字未満であるため)。ソースコードをダウンロードしてコンパイルする以外に、これを解決する方法はありますか?共有サーバーでは動作しないと確信しているので:(

4

2 に答える 2

1

'ブールモードの'オプションをチェックします。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

次のように、単語を引用符で囲むことができます。

SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('"Greater Noida"' IN BOOLEAN MODE); 

それはあなたが望むものにあなたを近づけるはずです。

于 2012-09-05T14:20:18.977 に答える
1

ブールモードで検索フレーズの前に+と-を追加することで、検索の優先度を定義できます。

  • その言葉を含む
  • たとえば、その単語を除外する

    SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('"+mobile -nokia"' IN BOOLEAN MODE);

于 2013-05-30T12:11:32.313 に答える