2014-02-18 4 views
1

플라스크 sqlalchemy orm을 통해 사용하는 postgres db와 함께 사용하도록 solr을 설정하려고합니다. 목적을 위해 라이브러리 pysolr을 찾았지만 solr 인덱스를 업데이트하기 위해 sqlalchemy 모델 내에서 후크를 설정하는 방법이 명확하지 않습니다. 어떤 예가 있습니까?플라스크에 solr/pysolr 사용 sqlalchemy

pysolr은 solr.add를 통해 수동으로 문서를 삽입 할 것을 제안하지만 다른 데이터베이스 테이블의 인덱스를 구분하는 방법은 명확하지 않습니다. ORM 모델

  1. , 후크 after_insert, after_update, after_remove 및 after_commit 및 삽입/:

    몇 가지 조사를 수행 한 후 나는 다음과 같은 방법으로 와서, 내가 궁금이 바로가는 방법입니다 경우 이러한 이벤트에서 solr의 객체 데이터를 업데이트/제거합니다.

  2. 다른 모델의 데이터를 분리하려면 solr 문서의 "id"필드에 테이블 이름을 접두사로 사용하십시오. solr_id = db_table_name + db_id

  3. 검색을 수행 할 때 모든 결과를 얻고 필요한 db 테이블과 일치하는 필터를 수동으로 필터링하고 ID를 추출한 다음 해당 ID에 대해 db를 검색하고 해당 db 결과를 사용합니다.

여기에 대해 더 좋은 방법이 있습니까? 감사.

답변

0

SQLAlchemySolr은 상이한 구조이다. 더 나은 솔루션은 데이터를 동기화하는 스크립트를 구현하는 것이라고 생각합니다. 스크립트를 실행하여 새 데이터를 30 분 또는 1 시간 정도 업데이트하십시오.

모델의 바인딩 삽입/업데이트/제거/커밋 메커니즘은 좋지 않습니다. Solr 서비스에 문제가있는 경우 웹 사이트 (액세스 데이터베이스 정보)가 영향을 받으므로 차이점 서비스를 독립적으로 유지하십시오.

+0

두 가지 서비스를 조금씩 유지하기 위해 모델 이벤트에서 샐러리 작업을 트리거 할 계획이었습니다. 별도의 스크립트를 사용해 볼 수도 있습니다. 다른 테이블에 속한 데이터를 분리하는 것에 대해 솔직하게 의견을 말할 수 있습니까? –

+0

음 ... 그래. 셀러리도 좋은 해결책을 사용하십시오. :) –

+0

Solr에 데이터를 추가하면 검색 용 문서 구조가됩니다. 검색이 필요한 경우 필요에 따라 다른 테이블의 데이터에 접근 할 수 있다고 생각합니다. –

관련 문제