वैगटेल इंडेक्सिंग बॉडी फील्ड नहीं

Sep 16 2020

मैं खोज करने की कोशिश कर रहा हूं। इसे 'शीर्षक' से शब्द मिल सकते हैं लेकिन 'शरीर' पाठ से नहीं। मेरे पास और कोई सेटिंग नहीं है केवल डिफ़ॉल्ट हैं।

कोई विचार?

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'),
    ]

और यह मेरा विचार है

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,
    })

जवाब

4 gasman Sep 16 2020 at 16:51

यह डिफ़ॉल्ट रूप से सक्षम डेटाबेस-आधारित खोज बैकएंड की एक सीमा है। के अनुसार वेग्टेल खोज बैकएंड डॉक्स :

डेटाबेस बैकएंड बहुत बुनियादी है और केवल विकास और छोटी साइटों पर उपयोग किए जाने का इरादा है। पृष्ठों के एक बड़े संग्रह की खोज करते समय इसकी प्रासंगिकता को गंभीर रूप से बाधित करते हुए, यह परिणाम का आदेश नहीं दे सकता है।

यह भी समर्थन नहीं करता है: पृष्ठ के उपवर्गों में फ़ील्ड पर खोज करना (जब तक कि कक्षा को सीधे नहीं खोजा जा रहा है)

bodyStandardPage पर क्षेत्र ऐसे ही एक क्षेत्र है - यह द्वारा नहीं खोजा जाएगा Page.objects.live().search(search_query)केवल, StandardPage.objects.live().search(search_query)। एक सामान्य खोज इंटरफ़ेस के लिए जो सभी प्रकार के पेजों पर काम करता है और प्रत्येक की पूरी सामग्री को खोजता है, आपको अन्य खोज बैकेंड में से एक पर स्विच करना होगा।