2017-02-20 3 views
0

pymongo MongoDB를 사용하여 문자열 검색이 필요합니다.이 문자열 검색은 키의 하위 문자열과 일치 하는지를 순서 및 대문자와 독립적으로 검사합니다.PyMongo : 부분 문자열이 단어 순서와 독립적으로 일치합니다.

예를 들어 보겠습니다. 나는 key'key', 'Fo tHe', 'foo t' 또는 'foo the'를 검색하면

{'_id':..., 'key': 'the foo'} 
{'_id':..., 'key': 'the bar'} 
{'_id':..., 'key': 'the baz'} 

, 나는 {'_id':..., 'key': 'the foo'}을 좀하고 싶습니다 : 내 컬렉션에서

은 다음과 같은 문서가 있습니다.

내가 이런 식으로 pymongo를 통해 정규 표현식을 사용하고 발견 된 최고의 솔루션 :

query = {'key': {'$regex' : my_string, '$options':'i'}} 
mycollection.find(query) 

그러나이 솔루션은 완전히 내 요구 사항을 포함하지 않습니다. 예를 들어 my_string = 'foo the' (역 단어 순서) 인 경우 문서를 반환하지 않습니다.

pymongo (MongoDB)에서 이러한 종류의 텍스트 검색을 효율적으로 수행 할 수 있습니까?

답변

1

전체 텍스트 인덱스보십시오 : 다음 번 그렇게

mycollection.create_index([("foo", "text")]) 

, 그리고 :

for doc in mycollection.find(
    {"$text": {"$search": "foo the"}} 
).sort({"score": {"$meta": "textScore"}}): 
    print(doc) 

MongoDB Text Indexessort by meta를 참조하십시오.

+0

틀린 것이 아니라면'$ text' 색인은 부분 문자열에 부분 일치를 지원하지 않습니다 ... – floatingpurr