2017-05-19 1 views
1

Je suis en train de mettre en place un simple blog dans Wagtail. Dans le cas des pages du blog, la recherche devrait également se pencher sur les deux champs personnalisés «intro» et «body». Mon blogpage modèle est la suivante:recherche de balises dans les champs de recherche personnalisés ne fonctionne pas

class PageWithSidebar(Page): 

    def get_context(self, request): 
     context = super(PageWithSidebar, self).get_context(request) 
     context['tags'] = BlogPageTag.objects.all().select_related().values('tag_id', 'tag_id__name').annotate(item_count=Count('tag_id')).order_by('-item_count')[:10] 
     context['categories'] = BlogCategory.objects.values('name').annotate(Count('name')).values('name').order_by('name') 
     context['recent_blogpages'] = Page.objects.filter(content_type__model='blogpage').filter(live='1').order_by('-first_published_at') 

     return context 

class BlogPage(PageWithSidebar): 


date = models.DateField("Post date") 
     intro = models.CharField(max_length=250) 
     body = RichTextField(blank=True) 
     tags = ClusterTaggableManager(through=BlogPageTag, blank=True) 
     categories = ParentalManyToManyField('blog.BlogCategory', blank=True) 
     social_description = models.CharField(max_length=140, blank=True) 

     def main_image(self): 
      gallery_item = self.gallery_images.first() 
      if gallery_item: 
       return gallery_item.image 
      else: 
       return None 

     def main_image_caption(self): 
      gallery_item = self.gallery_images.first() 
      if gallery_item: 
       return gallery_item.caption 
      else: 
       return None 

     search_fields = PageWithSidebar.search_fields + [ 
      index.SearchField('intro'), 
      index.SearchField('body'), 
     ] 

     content_panels = PageWithSidebar.content_panels + [ 
      MultiFieldPanel([ 
       FieldPanel('date'), 
       FieldPanel('tags'), 
       FieldPanel('categories', widget=forms.CheckboxSelectMultiple), 
       FieldPanel('social_description'), 
      ], heading="Blog information"), 
      FieldPanel('intro'), 
      FieldPanel('body'), 
      InlinePanel('gallery_images', label="Gallery images"), 
     ] 

La recherche fonctionne très bien pour le champ « title » mais pas pour les deux champs personnalisés. Je n'obtiens aucun résultat si je recherche des mots qui sont juste contenus dans le champ 'intro' ou 'body'.

Des idées que je manque?

+0

De quel moteur de recherche utilisez-vous? Le backend par défaut est limité et ne prend pas en charge les champs personnalisés. – dentemm

+0

J'utilisais celui par défaut. Après la configuration d'elasticsearch, tout fonctionne comme prévu. Thx – Mischa

Répondre

0

Je ne savais pas que le moteur de recherche par défaut ne prend pas en charge les champs personnalisés. Après le passage à elasticsearch, les champs personnalisés ont été inclus.

+0

FYI: Je viens de découvrir que Wagtail v1.10 prend également en charge la recherche en texte intégral pour Postgres, ce qui élimine le besoin d'Elasticsearch – dentemm

+0

Nice info! Merci – Mischa