2013-12-15 5 views
0

거대한 데이터베이스 (SQL Server)의 텍스트 문서 (지금까지 ~ 500GB)가 있습니다. 나는 그들에 대한 전체 텍스트 검색을 수행한다.관련 역할이있는 문서 검색

이 목적으로 solr/elastic 검색을 사용하고 싶습니다.

그러나 텍스트 문서는 조직의 역할, 즉 관리자 문서 또는 보스 문서와 연결됩니다. 그리고 사람들의 역할은 지금 바뀌고 있습니다.

이 목적으로 SQL 쿼리를 작성하는 데 문제가 없습니다.

Solr/elastic 검색과 같은 것을 생각할 수 없습니다.

이 문제를 어떻게 해결하겠습니까?

답변

1

"Custom security filtering in Solr"에 대한 좋은 블로그 게시물이 있습니다. 문서가 액세스 할 수 있는지 여부를 확인하기 위해 Java가 제공하는 모든 것을 할 수있는 PostFilter 인터페이스를 구현하는 방법을 보여줍니다. 이것은 회사 LDAP와 같은 액세스 정보를 보유하는 원격 시스템을 가지고있는 경우를위한 것입니다.


그러나 저자가

주의 사항으로는 포스트 필터가 문서 필터링을 구현하기위한 최후의 수단이므로주의하는 것이 중요합니다. 솔루션을 필요 이상으로 복잡하게 만들지 마십시오. 종종 액세스 제어 필터링은 허용 된 사용자 및 그룹을 문서에 인덱싱하고 lucene (또는 다른) 쿼리 구문 분석기를 사용하여 트릭을 수행함으로써 일반 검색 기술을 사용하여 구현할 수 있습니다. 규칙이 너무 복잡하거나 외부 정보가 필요한 경우에만 맞춤 PostFilter가 의미가 있습니다.

의미 : 액세스 정보를 보유하는 문서에 필드를 추가 할 수 없습니까? 그런 다음

<fields> 

    <!-- your other fields --> 

    <field name="owner" 
     type="String" indexed="true" stored="true" multiValued="false" /> 
    <field name="team" 
     type="String" indexed="true" stored="true" multiValued="false" /> 
    <field name="team-lead" 
     type="String" indexed="true" stored="true" multiValued="false" /> 
    <field name="roles" 
     type="String" indexed="true" stored="true" multiValued="true" /> 
</fields> 

비슷해 쿼리

Q = 일부 + 멋진 + 쿼리 & FQ = 소유자에 추가 할 수있는 검색 : 사용자 이름 + OR + 팀 : 사용자의 팀 이름 + 또는 + 역할 : 역할 1