2015-11-05 20 views
5

Mongo DB'mdeki belirli bir alanda metin aramasını etkinleştirmek istiyorum. Bu aramayı python'da (-> pymongo) uygulamak istiyorum. İnternetten verilen talimatları takip ettiğinizde:Pymongo ile bir dizin nasıl oluşturabilirim

db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index") 

aşağıdaki hata iletisi alıyorum:

Traceback (most recent call last): 
    File "CVE_search.py", line 8, in <module> 
    db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index") 
File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1599, in ensure_index 
     return self.create_index(key_or_list, cache_for, **kwargs) 
     File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1466, in create_index 
     index_doc = helpers._index_document(keys) 
     File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 100, in _index_document 
      for (key, value) in index_list: 
    ValueError: too many values to unpack 

pymongo içinde bir dizin oluşturmak için farklı/daha iyi bir yolu var mı? Dizin yönü olarak bir dizi ve TEXT olarak anahtarlarında geçtikleri yerde

cevap

9

create_index yöntemi kullanın:

collection.create_index([('field_i_want_to_index', pymongo.TEXT)], name='search_index', default_language='english') 
+0

ben db.command ('text', 'foo' kullandığınızda, indekste arama yapmak için arama = query), birkaç kelimeyi nasıl sorgulayabilirim? – Maximilian

+1

@PeterFox İyi bir soru ama bunun için yeni bir soru oluşturmanızı öneririm o zaman oradan alabiliriz. – chridam

İlgili konular