के साथ हैस्टैक परिणामों को फ़िल्टर करने के लिए कैसे करें मुझे अपने मॉडल में टेक्स्ट-सर्च करने और एक ही समय में डीबी क्वेरी के साथ फ़िल्टर करने की आवश्यकता है।डीबी क्वेरी
उदाहरण के लिए:
class MyModel(models.Model):
text = models.TextField()
users = models.ManyToMany(User)
class MyModelIndexIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, model_attr='text')
def get_model(self):
return MyModel
तो मैं उपयोगकर्ता द्वारा और पूर्ण-पाठ खोज के माध्यम से कुछ पाठ से सभी MyModel वस्तुओं फ़िल्टर करना चाहते हैं। इस तरह के Smth:
qs = MyModel.objects.filter(users=request.user)
sqs = MyModelIndex.objects.filter(text=request.GET['q'])
intersection = some_magic_function(qs, sqs)
या
intersection = some_other_magic_function(
qs_kwargs={'users': request.user},
sqs_kwargs={'text': request.GET['q']}
)
बेशक वांछित डाटाबेस प्रश्नों और अधिक जटिल हो सकता है।
मैं बड़ी खामी के साथ कुछ संभव समाधान, सभी देखें: Django में
मेक मिलन बिंदु: Q के आईडी निकालें और उन्हें SQS फिल्टर या ठीक इसके विपरीत में इस्तेमाल करते हैं। समस्या: प्रदर्शन। हम पेजिनेशन का उपयोग करके इस प्रकार काम कर सकते हैं और केवल दिए गए पेज और इसके पूर्ववर्तियों के लिए छेड़छाड़ कर सकते हैं। । इस मामले में हम कुल संख्या (
सूचकांक सभी M2M संबंधित क्षेत्रों समस्या खोना: प्रदर्शन, कार्यक्षमता नकल (मैं db इस तरह के प्रश्नों ज्यादा बेहतर करना होगा विश्वास करते हैं), db-सुविधाओं जैसे टिप्पणियां आदि
के रूप में भूसे के ढेर का उपयोग न करें (mysql के लिए जाएं या posgresql में निर्मित पूर्ण-पाठ खोज।
मेरा मानना है कि मैं कुछ स्पष्ट याद आती है। मामला काफी आम हो रहा है। वहाँ एक पारंपरिक समाधान है?
आपको अपने "चौराहे" चर में क्या डेटा होना चाहिए? क्या इसमें माईमोडेल के साथ-साथ MyModelIndex ऑब्जेक्ट्स शामिल होना चाहिए? या आप सिर्फ एक या दूसरे की जरूरत है? यदि आप समझ सकते हैं कि आप जो हासिल करने की कोशिश कर रहे हैं, वह मदद कर सकता है, तो इसका कोई संदर्भ नहीं है। –
@TitusP: मेरे चौराहे में मैं या तो क्वेरीसेट या searchresultset चाहता हूँ। मेरे उदाहरण में मैं उपयोगकर्ता द्वारा और पूर्ण-पाठ खोज के माध्यम से सभी MyModel ऑब्जेक्ट्स को फ़िल्टर करके फ़िल्टर करना चाहता हूं। – Nik
आप किस हेस्टैक इंजन का उपयोग करते हैं? –