2012-09-04 15 views
6

मैं हुओश 2.4 और Django 1.3 के साथ हैस्टैक 1.2.6 का उपयोग करता हूं। मान लें कि हमारे पास एक अनुमानित पोस्ट का वर्णन करने वाला मॉडल है।दो (एकाधिक) क्षेत्रों पर Django Haystack स्वत: पूर्णता

Post(models.Model): 
    title = models.CharField() 
    body = models.TextField() 

हम शरीर मैदान पर स्वतः पूर्णता के लिए इस तरह हमारी पोस्ट सूचकांक बनाया:

PostIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    content_auto = indexes.EdgeNgramField(model_attr='body') 

भूसे के ढेर दस्तावेज़ पढ़ें करने के बाद अच्छी तरह से मैं अगर दोनों शीर्षक और शरीर खेतों पर स्वतः पूर्ण होना संभव नहीं है नहीं मिल रहा।

तो ... क्या यह संभव है या ...?

उत्तर

7

मैंने इसे this पर आधारित करने में कामयाब रहा है।

sqs = SearchQuerySet().models(Post) 
sqs1 = sqs.filter(title_auto=q) 
sqs2 = sqs.filter(body_auto=q) 

sqs = sqs1 | sqs2 

आप अतिरिक्त छानने क्या करना है, तो आप इसे क्या करने की जरूरत: तुम बस प्रत्येक क्षेत्र आप अपने सूचकांक में पर स्वत: पूर्ण करना चाहते हैं के लिए एक EdgeNgramField, तो दो अलग अलग खोज क्वेरीसमूहों को स्वतः पूर्ण लागू करते हैं और उन्हें जोड़ कर स्वत: पूर्णता के बाद (कम से कम यह मेरे लिए काम करने का एकमात्र तरीका था)।

3

यहाँ एक आसान तरीका है, टेम्पलेट & उपयोग EdgeNgramField में संयोजन कर (हालांकि एक पोस्ट के शरीर पर कर रही है कि महंगा है:

#In search_indexes.py 
PostIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.EdgeNgramField(document=True, use_template=True) 

#In <app>\template\search\index\<app>\post_text.txt 
{{ object.title }} {{object.body}} 

तो इस तरह के सभी प्रश्नों दोनों शीर्षक & शरीर पर स्वतः पूर्ण कर

sqs = SearchQuerySet().models(Post).autocomplete(text='hello') 

पीएस हेस्टैक 2.x

का उपयोग कर पीएस
संबंधित मुद्दे