2010-07-15 7 views
0

나는 주어진 문자열에있는 단어 중 하나라도 name 필드에 포함되는 경우 내가 찾을 수있는 방법을 지금 단어의 문자열 주어진 Django에서 문자열을 데이터베이스 필드와 비교하는 방법은 무엇입니까?

'Very big News' 
'News' 
'something else' 
'New Nes' 
'Fresh News' 
'Something else' 

같은 name 열을 갖는 데이터가있는 데이터베이스가? 예를 들어

:

나는 문자열 'super very news' 있습니다. 내 데이터베이스에서 name 필드에 'super' 또는 'very' 또는 'news' 또는 'super very' 또는 'very news' 중 하나가 들어있는 레코드가 있는지 확인해야합니다.

+0

시도해 보셨습니까? 작동 했나요? 어떤 문제가 있었습니까? –

답변

4

의견을 기반으로 업데이트. 쿼리 세트 문서 here을 참조하십시오. (약) 생산

matching_result = YourModel.objects.filter(Q(name__contains='super') | 
              Q(name__contains='very') | 
              Q(name__contains='news')) 

단일 쿼리에서 다음 SQL : 당신의 단어 목록은 작고 간단

select * from your_model where name like '%super%' or name like '%very%' or name like '%news%' 
+0

아니요, 이해하지 못했습니다. 나는 원격 데이터베이스를보고 싶지 않다. 예를 들어 문자열에 들어있는 데이터가 '내 데이터'인지보고 싶습니다. '뉴스'또는 'about'또는 'something'필드가 있는지 살펴야합니다. – Pol

+0

검색을 수행하고 싶습니다. 원격 데이터를 보유하는 데이터베이스 모델. – sdolan

+0

나는 그가 문자열 내에서 'LIKE * news *'검색 키워드를 원한다고 생각하지만, 하나의 필드가 아닌 모든 필드에서 ... – eruciform

0

경우 당신이 할 수있는이 동등한를 생성

your_search_query = 'super very news' 

qset = Q() 
for term in your_search_query.split(): 
    qset |= Q(name__contains=term) 

matching_results = YourModel.objects.filter(qset) 

자신의 찾아보기 테이블과 인덱서를 작성하십시오. 그렇지 않으면 OpenFTS와 같은 전체 텍스트 데이터베이스가 필요합니다.

http://openfts.sourceforge.net/

관련 문제