2015-11-05 6 views
5

Ich möchte Textsuche in einem bestimmten Feld in meiner Mongo DB ermöglichen. Ich möchte diese Suche in Python (-> Pymongo) implementieren. Als ich folgen Sie den im Internet angegebenen Anweisungen:Wie kann ich einen Index mit pymongo erstellen

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

ich folgende Fehlermeldung:

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 

Gibt es eine andere/bessere Möglichkeit, einen Index in pymongo zu schaffen?

Antwort

9

Mit dem create_index Verfahren, bei dem man in die Tasten als Array und TEXT als Index Richtung passieren:

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

wenn ich den db.command ('Text', 'foo', search = query) um den Index zu durchsuchen, wie kann ich mehrere Wörter abfragen? – Maximilian

+1

@PeterFox Gute Frage, aber ich würde vorschlagen, dass Sie eine neue Frage für das erstellen, dann können wir es von dort nehmen. – chridam

Verwandte Themen