Проблема с добавлением дополнительных атрибутов в solr search true django -oscar и haystack - PullRequest
0 голосов
/ 13 февраля 2020

Я новичок здесь и это мой первый вопрос, извините, если я что-то упустил.

Кажется, у django -oscar есть проблема с поиском. что я пытаюсь точно понять: у меня есть проект, в котором поиск работает со значениями по умолчанию " диапазон цен " и некоторыми полями по умолчанию, такими как " класс продукта " и " рейтинг ». НО, когда я пытаюсь добавить свои собственные атрибуты в solr, я ничего не получаю (атрибуты были добавлены через models.py ):

location = models.TextField(('Location'), blank=True, default=None, null=True)

duration = models.TextField(('Duration'), blank=True, default=None, null=True)

Я добавил эти строки в свой search_indexes.py

class ProductIndex(indexes.SearchIndex, indexes.Indexable):
        product_class = indexes.CharField(null=True, faceted=True) <-- default working
        location = indexes.CharField(null=True, faceted=True)
        duration = indexes.CharField(null=True, faceted=True)

        def prepare_product_class(self, obj): 
            return obj.get_product_class().name <-- default working

        def prepare_location(self, obj):
            return obj.get_location_class().name

        def prepare_duration(self, obj):
            return obj.get_duration_class().name

добавил их в settings.py

OSCAR_SEARCH_FACETS = {
    'fields': OrderedDict(
        [('product_class', {'name': _('Type'), 'field': 'product_class'}),
         ('rating', {'name': _('Rating'), 'field': 'rating'}),
         ('location', {'name': _('Location'), 'field': 'location'}),
         ('duration', {'name': _('Duration'), 'field': 'duration'}),
]),

Итак, первая проблема с командой python manage.py build_solr_schema> solr / schema. xml схема построения. xml, которая не работает - solr выдает ошибки в некотором поле id, , и нет полей , которые я хотел бы добавить ,

Хорошо, я получаю схему. xml от github , и solr работает со стандартной функциональностью. Я добавил туда два поля вручную:

<field name="location" type="edge_ngram" indexed="true" stored="true" multiValued="false" />
<field name="duration" type="edge_ngram" indexed="true" stored="true" multiValued="false" />

Поиск работает с атрибутами по умолчанию, и до сих пор нет атрибутов, которые я пытался добавить ранее:

Здесь я вижу пользовательские атрибуты

И его здесь нет

И, конечно, здесь нет

Solr log

22087 [qtp1778535015-11] INFO org.apache.solr.core.SolrCore UnInverted multi-valued field field=location,memSize=4288,tindexSize=0,time=0,phase1=0,nTerms=0,bigTerms=0,termInstances=0,uses=0}
22103 [qtp1778535015-11] INFO  org.apache.solr.core.SolrCore  .. UnInverted multi-valued field {field=duration,memSize=4288,tindexSize=0,time=0,phase1=0,nTerms=0,bigTerms=0,termInstances=0,uses=0} 

что мне может не хватать? Заранее благодарю за любой совет.

Стек:

django==2.0.6
django-oscar==1.6.4
django-haystack==2.8.1
solr == 4.8.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...