Python 웹어플리케이션에서 MongoDB를 사용하여 검색어를 찾을때 검색어가 하나가 아닌 다수인 경우 이를 해결하는 방법입니다.

먼저 정규표현식을 사용한 방법으로 검색을 수행하며 이때 여러개의 검색어는 빈 여백(space)으로 파라미터에 넘어옵니다. 파라미터는 Get방식으로 넘어오며 이를 아래와같이 replace()를 사용하여 변경합니다. 만약 파라미터 이름이 keyword인 경우 아래와 같이 사용할 수 있습니다.



# 다수의 검색어(Multiple Keyword) 검색하는 방법
아래와 같이 먼저 구분자인 공백을 기준으로 replace()를 적용합니다.
keyword = request.args.get('keyword', '').replace(' ', ')(?=.*')

이제 keyword가 있는 경우 쿼리는 아래와 같이 적용합니다.
if keyword:
  keywordQuery = {'text': {'$regex': '(?=.*'+keyword+')'}}

정규표현식을 사용하여 text라는 필드에 포함된 중복된 키워드를 검색합니다. 이를 다시 나타내면 아래와 같습니다.
keyword = request.args.get('keyword', '').replace(' ', ')(?=.*')if keyword:
  keywordQuery = {'text': {'$regex': '(?=.*'+keyword+')' }}

이제 중복된 검색을 수행할 수 있을 것입니다. 참고로 webisfree.com 역시 검색이 space를 구분으로 중복 검색이
가능합니다. 즉 web is와 같이 검색할 수 있습니다.