У меня было два SearchIndexes с точно одинаковыми полями , такими как:
class TopicIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True, template_name="topic_template.txt")
id = indexes.IntegerField(model_attr='id')
title = indexes.CharField(model_attr='title')
extra_info = indexes.CharField()
type = indexes.CharField(default="topic")
def get_model(self):
return Topic
def index_queryset(self, using="default"):
return self.get_model().objects.all()
def prepare_extra_info(self, obj):
return "/media/" + str(obj.cover)
class ReviewIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True, template_name="review_template.txt")
id = indexes.IntegerField(model_attr='id')
title = indexes.CharField()
extra_info = indexes.CharField()
type = indexes.CharField(default="review")
def get_model(self):
return Review
def index_queryset(self, using="default"):
return self.get_model().objects.all()
def prepare_title(self, obj):
return obj.topic.title
def prepare_extra_info(self, obj):
return obj.reviewer.name
Один связан с другим. И я пытаюсь проиндексировать их два в одно ядро solr со схемой вроде:
<fields>
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="django_ct" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="django_id" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="text" type="edge_ngram" indexed="true" stored="true" multiValued="false" />
<field name="title" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="extra_info" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="type" type="text_en" indexed="true" stored="true" multiValued="false" />
<uniqueKey>id</uniqueKey>
</fields>
Однако каждый раз, когда я выполнял rebuild_index или update_index, он индексирует обе модели:
Removing all documents from your index because you said so.
All documents removed.
Indexing 9 topics
Indexing 19 reviews
Solr имеет только индексы второй модели в своих документах, поскольку я запросил все индексы и обнаружил, что индекс первой модели отсутствует. Кажется, индексы первой модели были перезаписаны. Как я могу решить это?