鹡鸰不索引主体字段

Wagtail not indexing body field

我正在尝试搜索。它可以从 'title' 中找到单词,但不能从 'body' 文本中找到单词。我没有进一步的设置只有默认值。

有什么想法吗?

class StandardPage(Page):
    body = RichTextField(features=['h2', 'bold', 'italic', 'link', 'ol', 'ul', 'document-link', 'image', 'embed'])
    sidebar_image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )


    # Search index configuration

    search_fields = Page.search_fields + [ # Inherit search_fields from Page
        index.SearchField('body'),
    ]

这是我的 view.py

def search(request):
    search_query = request.GET.get('query', None)
    page = request.GET.get('page', 1)

    # Search
    if search_query:
        search_results = Page.objects.live().search(search_query)
        query = Query.get(search_query)

        # Record hit
        query.add_hit()
    else:
        search_results = Page.objects.none()

    return render(request, 'search/search.html', {
        'search_query': search_query,
        'search_results': search_results,
    })

这是默认启用的 database-based 搜索后端的限制。根据 the Wagtail search backend docs:

The database backend is very basic and is intended only to be used in development and on small sites. It cannot order results by relevance, severely hampering its usefulness when searching a large collection of pages.

It also doesn’t support: Searching on fields in subclasses of Page (unless the class is being searched directly)

StandardPage 上的 body 字段就是这样一个字段 - 它不会被 Page.objects.live().search(search_query) 搜索,只会被 StandardPage.objects.live().search(search_query) 搜索。对于适用于所有页面类型并搜索每种页面的全部内容的通用搜索界面,您需要切换到其他搜索后端之一。