0

場所と説明/タイトルのあるモデルがあります。この情報はSolrで索引付けされています。データを検索するとき、最初に場所、次にキーワードで関連性を持たせようとしていますが、それを達成できないようです。キーワードと場所の両方が提供されている場合、結果は最初にキーワードで並べ替えられます。

searchable do
  location :coordinates do
    Sunspot::Util::Coordinates.new(self.location.latitude, self.location.longitude) if self.location
  end
  text :title
  text :description
  ...
end

検索はそのように定義されます

  search.build do
    with(:coordinates).near(latitude, longitude, :precision=>radius)
    keywords "#{search_words}", :fields => [:title, :description], :minimum_match => 1
  end

それが役立つ場合、キーワードが提供されていない場合、結果はすでに場所でソートされています

4

1 に答える 1

0

キーワードよりも距離を優先するように強制してみてください。

:score各検索結果のSolrdismaxスコアを含む内部フィールドです。:score, :descを指定しない場合、デフォルトの順序になりますorder_by

Solrorder_by_geodist(:coordinates, latitude, longitude)にディスマックススコアを無視させるように強制すると、代わりに距離の順序が取得されます。後で追加するorder_by(:score, :desc)と、ディスマックススコアが考慮されますが、距離が等しい(または欠落している)場合に限ります。

search.build do
  with(:coordinates).near(latitude, longitude, :precision=>radius)
  keywords "#{search_words}", :fields => [:title, :description], :minimum_match => 1
  order_by_geodist(:coordinates, latitude, longitude)
  order_by(:score, :desc)
end
于 2012-05-10T16:46:31.450 に答える