1

コントローラーには次のものがあります。

def autocomplete
  spots = Spot.where("name LIKE ?", "%#{params[:term]}%")
  render :json => spots.map(&:name)
end

これが私の見解です:

<%= label_tag :term, "Term" %> <%= search_field_tag :term %>
...
$("input#term").autocomplete({
  source: '<%= autocomplete_places_path %>',
  minLength: 2,
  delay: 500
});

この一連のレコードがあるとしましょう:

| id |   name   |     address     |
|  1 |  Stall A |   Fruity Road   |
|  2 |  Stall B |  Chinky Street  |
|  3 | Restroom |  White Garden   |

検索するstallと、録画1して2表示されます。

私が達成したいのは、検索するstall fruとレコードのみ1が表示されることです。現在、この用語を検索してもレコードは表示されません。

クエリを書き直さなければならないことはわかっていますが、どうすればよいでしょうか。

どうもありがとう。

4

1 に答える 1

0

新しいソリューションに実装しようとしているのは、「全文検索」と呼ばれます。

これを達成するのに役立つ多くの宝石がありますが、それらは現在この回答の範囲を超えています。このS/Oの質問は、仕事をする宝石の束にリンクしています:Railsによる全文検索

または、「railsgems全文検索」をグーグルで検索することをお勧めします。さまざまな結果が得られます。

コメントに記載されている「2つの列を一緒に絞る」アプローチはすばやく簡単で、上記の2つの例、たとえば「stall fru」と「fruity」で機能しますが、「fruity stall」を試しても、おそらく何も見つかりません。 "。これはあなたにとってうまくいくかもしれないし、うまくいかないかもしれません。

使用するデータベースによっては、データベースでネイティブに実行する方法もある場合があります。詳細を調べるには、使用するグーグル検索は「全文検索」になります

于 2012-09-07T06:45:41.827 に答える