हालांकि LIKE कथन (आंशिक मिलान) पूर्ण पाठ खोज में समर्थित नहीं है, लेकिन आप इसके आसपास हैक कर सकते हैं।
सबसे पहले, हर संभव सबस्ट्रिंग के लिए डेटा स्ट्रिंग (हैलो = ज, वह, Hel, लो, आदि)
def tokenize_autocomplete(phrase):
a = []
for word in phrase.split():
j = 1
while True:
for i in range(len(word) - j + 1):
a.append(word[i:i + j])
if j == len(word):
break
j += 1
return a
एक सूचकांक + दस्तावेज़ (खोज API) का निर्माण tokenized तार का उपयोग कर tokenize
index = search.Index(name='item_autocomplete')
for item in items: # item = ndb.model
name = ','.join(tokenize_autocomplete(item.name))
document = search.Document(
doc_id=item.key.urlsafe(),
fields=[search.TextField(name='name', value=name)])
index.put(document)
खोज करें, और वॉला!
results = search.Index(name="item_autocomplete").search("name:elo")
https://code.luasoftware.com/tutorials/google-app-engine/partial-search-on-gae-with-search-api/
स्रोत
2012-11-01 04:57:18
दोहराना नहीं यह अच्छी तरह से काम करता है। मैं फेरिस की search.index फ़ंक्शन को स्वचालित रूप से सभी टेक्स्टफील्ड (एक पंक्ति परिवर्तन) को टोकन करने में कामयाब रहा, और यह "बस काम करता है"। बस खोज परिणामों से सीधे उपयोगकर्ता को कहा गया फ़ील्ड प्रदर्शित करने का प्रयास न करें;) –
मैंने 'name.lower() 'भी जोड़ा है क्योंकि मुझे रूसी भाषा के साथ कुछ अजीब समस्याएं थीं: यदि टोकन पूंजी पत्र से शुरू होता है मैं इस तरह के टोकन खोजने में असमर्थ था। –
दोस्ताना नोट: वाक्यांश "voila!" है –