2016-11-01 7 views
2

lucene과 solr을 사용하여 사용자 정의 지식베이스에 전체 텍스트 검색 기능을 추가하려고합니다. 현재 사용자는 역할 기반 모델로 볼 수있는 것을 제한합니다. 따라서 각 기사에 연결된 역할의 배열이 있으며 사용자가 해당 역할 중 하나의 구성원이기도하다면 기사를 볼 수 있습니다.제한된 사용자 액세스로 Lucene 색인 생성

물론 검색은 사용자가 액세스 할 수있는 결과 만 반환해야합니다.

시작 위치 또는 수행 방법에 조금 얽혀 있습니다. 나중에 결과를 필터링해야합니까? 역할 기반 색인을 만들 수 있습니까?

누군가가 올바른 방향으로 나를 가리킬 수 있으면 매우 감사 할 것입니다.

감사합니다. 스테파니.

답변

1

메타 데이터로 액세스 역할을 저장하는 것이 좋습니다. Letter을 정의하면 다중 값 문자열 필드를 사용할 수 있습니다.

access_roles:[user, admin] // Users and the Admin roles can access this search. 
access_roles:[user, admin, anonymous] // Users and the Admin and Anonymous roles can access this search. 

사용 권한을 변경하려면 액세스 역할을 편집해야합니다.


사용자 역할 검색이있는 사용자는 solr이 사용자의 액세스 역할과 일치하는 결과 만 검색합니다.

하면 사용자도 (user) 역할이있는 사람 (admin) 역할 검색, 그 검색이 같이 이동 :

q=mainquery 
&fq=access_roles:user 
&fq=access_roles:admin 
&facet=on 
&facet.field=access_roles 

user 역할 또는 access_roles에서admin 역할을 포함하는 모든 결과를 가져옵니다한다;

사용자 (user) 역할, 특별한 팀의 구성원 (it_department) 역할 검색,

q=mainquery 
&fq=access_roles:user 
&fq=access_roles:it_department 
&facet=on 
&facet.field=access_roles 

내가 더 잘

을 이해하기위한 인증 방식 drawed 한

도 '를 it_department'문서 반입하는 경우

enter image description here

검색어는 http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 두 가지 질문이 있습니다. 먼저 쿼리를 기반으로 결과를 제한하는 것이 약간 위험하지 않습니까? 내가 아는 한,이 쿼리는 사용자가 조작 할 수 있습니다. 둘째, 우리는 인터페이스로서 접근 메소드를 구현하여 다른 구현체가 다른 함수/메소드를 사용한다는 것이다. 방금 말씀 드렸듯이 예를 들어 액세스를 제한하기 위해 위 주소를 사용하는 조직이 있습니다. 따라서 기본적으로 access_method는 사용자 세션 당 실시간으로 true를 반환해야합니다. 감사. Stephanie – Stephanie

+0

물론 나는 IP 주소가 아닌 주소를 의미했습니다. – Stephanie

+0

귀하의 solr 쿼리가 마지막 사용자로부터 직접 액세스 할 수 있다고 생각하지 않았습니다. 귀하가 웹 프레임 워크를 사용하고 있다고 생각했습니다. 난 lucene 쿼리 파서와 봄처럼 웹 프로젝트 sth에서 사용자의 쿼리를 받아야한다고 생각해. 모든 액세스 그룹을 구별 할 수있는 상수 인 구현 된 access_roles에 대해 몇 가지 상수를 정의해야합니다. 즉 boolean을 직접 사용할 수 없습니다. 사용자 그룹별로 구현 된 표시기를 정의해야합니다.액세스 메소드가 true 인 경우, 사용자 액세스 가능 컨트롤러 메소드를 인터 A 트하는 u 리에 access_role을 추가해야합니다. Solr에는 프레임 워크 –