我有一組使用belongs_to
關聯的類別和子類別中的帖子集合。此外,這些帖子與我的州和城市模型有belongs_to
關係。如何通過關聯限制輪胎/彈性搜索結果?
我通過對URL中的子域進行request.subdomain
檢查,將控制器上的帖子顯示限制爲屬於相應位置(即城市或州)的帖子。除了使用Tire/ElasticSearch進行搜索外,此功能完美適用。
由於某些原因,我無法讓Tire將搜索結果限制到屬於特定位置的帖子。我嘗試在模型中使用cater_accessor :request_subdomain
將子域加入模型,並在控制器中添加before_filter
,其中@city_or_state
與子域相關聯。
def set_request_subdomain
Post.request_subdomain = @city_or_state if [email protected]_or_state.nil?
end
這裏是我的模型:
def self.search(params)
tire.search(load: true, page: params[:page], per_page: 10) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
filter :terms, :published => [true]
filter :terms, :request_subdomain => [:city_subdomain || :state_subdomain]
end
end
def to_indexed_json
to_json(methods: [:city_name, :city_subdomain, :state_name, :state_subdomain])
end
def city_name
self.city.name
end
def city_subdomain
city.subdomain.titleize
end
def state_name
self.state.name
end
def state_subdomain
state.subdomain.titleize
end
我需要搜索由位置(即子域)來限制的結果。
我在這裏錯過了什麼?
UPDATE: 我按照this railscast並沒有能夠得到刻面的工作......我想也許我可以限制搜索項目基於一個面(即沒有選擇的小面在用戶railscast),但我一直無法得到這個工作。
任何想法?
看起來應該工作就好了,你檢查的具體文件你必須在Elasticsearch中確保它們實際上具有你要過濾的子域,然後檢查正在使用的分析器,以確保你沒有搜索與你認爲你實際上在http:/ /stackoverflow.com/questions/16005220/tire-terms-filter-not-working – concept47 2013-05-20 21:30:36
我現在正在努力的部分是將request.subdomain與ElasticSearch中記錄與該子域進行比較的邏輯......我可以使用用戶選擇的Facets與railscast相同的方式工作只是不能'基於'request.subdoman'自動'工作' – 2013-05-20 21:33:32