Mam aplikację Rails, która jest teraz skonfigurowana z ElasticSearch i klejnotem Tire do wyszukiwania w modelu i zastanawiałem się, w jaki sposób powinienem skonfigurować moją aplikację do wykonywania rozmytych ciągów znaków dopasowanie do określonych indeksów w modelu. Mam mój model skonfigurowany do indeksowania rzeczy takich jak tytuł, opis, itp., Ale chcę zrobić rozmyte dopasowywanie ciągów na niektórych z nich i nie jestem pewien, gdzie to zrobić. Podam mój kod poniżej, jeśli chciałbyś skomentować! Dzięki!Fuzzy String Matching with Rails (Tire) i ElasticSearch
W regulatorze:
def search
@resource = Resource.search(params[:q], :page => (params[:page] || 1),
:per_page =>15, load: true)
end
w modelu:
class Resource < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
belongs_to :user
has_many :resource_views, :class_name => 'UserResourceView'
has_reputation :votes, source: :user, aggregated_by: :sum
attr_accessible :title, :description, :link, :tag_list, :user_id, :youtubeID
acts_as_taggable
mapping do
indexes :id, :index => :not_analyzed
indexes :title, :analyzer => 'snowball', :boost => 40
indexes :tag_list, :analyzer => 'snowball', :boost => 8
indexes :description, :analyzer => 'snowball', :boost => 2
indexes :user_id, :analyzer => 'snowball'
end
end
pomocne, ale elasticsearch skończyło się na tym, że jest zbyt nieporęczny, więc skończyło się przejście na postgresql. w każdym razie dzięki! – noname
bardzo pomocna ... z odrobiną cierpliwości, przykład ur pracował jak urok :) – Rinku
Jaki wpływ ma parametr ': store => 'yes''? – phillbaker