वैगटेल इंडेक्सिंग बॉडी फील्ड नहीं
मैं खोज करने की कोशिश कर रहा हूं। इसे 'शीर्षक' से शब्द मिल सकते हैं लेकिन 'शरीर' पाठ से नहीं। मेरे पास और कोई सेटिंग नहीं है केवल डिफ़ॉल्ट हैं।
कोई विचार?
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,
})
जवाब
यह डिफ़ॉल्ट रूप से सक्षम डेटाबेस-आधारित खोज बैकएंड की एक सीमा है। के अनुसार वेग्टेल खोज बैकएंड डॉक्स :
डेटाबेस बैकएंड बहुत बुनियादी है और केवल विकास और छोटी साइटों पर उपयोग किए जाने का इरादा है। पृष्ठों के एक बड़े संग्रह की खोज करते समय इसकी प्रासंगिकता को गंभीर रूप से बाधित करते हुए, यह परिणाम का आदेश नहीं दे सकता है।
यह भी समर्थन नहीं करता है: पृष्ठ के उपवर्गों में फ़ील्ड पर खोज करना (जब तक कि कक्षा को सीधे नहीं खोजा जा रहा है)
bodyStandardPage पर क्षेत्र ऐसे ही एक क्षेत्र है - यह द्वारा नहीं खोजा जाएगा Page.objects.live().search(search_query)केवल, StandardPage.objects.live().search(search_query)। एक सामान्य खोज इंटरफ़ेस के लिए जो सभी प्रकार के पेजों पर काम करता है और प्रत्येक की पूरी सामग्री को खोजता है, आपको अन्य खोज बैकेंड में से एक पर स्विच करना होगा।