django -хейстек с несколькими индексами Solr, но только одна проиндексированная - PullRequest
0 голосов
/ 02 апреля 2020

У меня было два 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 имеет только индексы второй модели в своих документах, поскольку я запросил все индексы и обнаружил, что индекс первой модели отсутствует. Кажется, индексы первой модели были перезаписаны. Как я могу решить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...