like
, , startswith
연산자와 비슷한 쿼리를 생성하는 방법이 있습니까?Google 애플리케이션 엔진이있는 web2py와 비슷한 항목
그래서 비슷한 할 수 : web2py에서 응용 프로그램 엔진
db(db.some_table.like('someting')).select()
합니다.
like
, , startswith
연산자와 비슷한 쿼리를 생성하는 방법이 있습니까?Google 애플리케이션 엔진이있는 web2py와 비슷한 항목
그래서 비슷한 할 수 : web2py에서 응용 프로그램 엔진
db(db.some_table.like('someting')).select()
합니다.
앱 엔진은 전문 검색을 지원하지 않으므로 짧은 대답은 아니오입니다.
web2py로 수행 할 수있는 작업은 검색 할 키워드 목록이있는 계산 된 파일을 생성하는 것입니다.
def tokenize(r): return [x.lower() for x in re.compile('\w+').findall(r.title)]
db.define_table('data',
Field('title'),
Field('keywords','list:string',compute=tokenize,writable=False,readable=False))
키워드 필드는 StringListProperty()입니다.
은 그런 대신 제목에서 검색, 당신은 키워드를 검색 :
rows = db(db.data.keywords.contains(my_keyword.lower())).select()
이 GAE에서 작동하고 매우 효율적입니다. 문제는 GAE의 "폭발"인덱스 문제로 인해 복잡한 쿼리에서이를 결합하는 데 사용되지 않는다는 것입니다. 예를 들어 N 개의 키워드가 있고 두 개의 키워드를 검색하려고합니다 :
rows = db(db.data.keywords.contains(my_keyword1.lower())&
db.data.keywords.contains(my_keyword2.lower())).select()
색인 크기는 N^2가됩니다. 따라서 로컬에서보다 복잡한 쿼리를 수행해야합니다.
이 모두는 GAE 및 GAE에서 작동하지 않습니다. 휴대용입니다.
! 좋은 대답 – crodjer
다음으로 시작하십시오 : http://stackoverflow.com/questions/1554600/implementing-starts-with-and-ends-with-queries-with-google-app-engine; 다른 2는 불가능합니다. 덕분에 – geoffspear