- Когда я Гото
category/edit/1
и изменить название категории, старое имя все еще отображается в моем выходе фасета. - Когда я создаю новую категорию, она не отображается в моей статье articles.category, пока я не создам хотя бы одну статью с этим названием категории (имеет смысл, но непреднамеренно).
Вот соответствующие биты модели статьи:
class Article < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
# This is just a custom module I made that does index.refresh on save/delete
# to ensure that I'm getting a fresh view of the index on a page load.
include ElasticSearch::RefreshIndex
# Trimmed out a bunch of fields, but this should be enough to see what's going on.
mapping do
indexes :title, type: "string", analyzer: "snowball", boost: 10
indexes :category do
indexes :id, type: "integer", index: "not_analyzed", include_in_all: false
indexes :name, type: "string", index: "not_analyzed"
end
end
belongs_to :category, touch: true
def self.search()
# Trimmed out a lot of code here, but this is just the facet.
facet "categories" do
terms "category.name", all_terms: true
end
end
def to_indexed_json
to_json(include: { category: { only: [:id, :name] } })
end
end
Вот соответствующие биты модели Категория:
class Category < ActiveRecord::Base
include Tire::Model::Search
include Tire::Model::Callbacks
include ElasticSearch::RefreshIndex
mapping do
indexes :id, type: "integer", index: "not_analyzed", include_in_all: false
indexes :name, type: "string", analyzer: "not_analyzed", boost: 50
indexes :description, type: "string", analyzer: "snowball"
end
has_many :articles, dependent: :destroy
after_touch() { tire.update_index }
end
Вот как я использую categories
огранку в моих статьях/индексный вид:
<% @articles.facets["categories"]["terms"].each do |facet| %>
<%= facet_item "checkbox", "category_name[]",
option_value: facet["term"],
option_text: facet["term"],
facet_count: facet["count"],
param: "category_name"
%>
<% end %>
Не беспокойтесь о том, что делает facet_item
, это просто помощник вида, который правильно отображает флажок, метку, подсчет и устанавливает правильное состояние проверки.
Что мне нужно сделать, чтобы исправить эти две проблемы? Первый для меня самый важный, но в идеале я хотел бы выяснить, как заставить обоих работать.
Да, это то, что сказал мне карми делать тоже. Просто импортируйте каждую статью, когда я обновляю категорию. Это решает проблему №1, но №2 все еще проблема, любые идеи? – AntelopeSalad
Вы не можете положиться на поиск elasticsearch. Получите список категорий из базы данных, а затем выполните фасет запроса с Elasticsearch, если вы действительно хотите отобразить его – concept47