2014-06-23 2 views
0

그래서 저는 Apache Solr을 처음 접했고 현재 처리 방법을 알고있는 상황이 있습니다. 나는 객체 지향 프로그래밍 배경에서부터 먼저 객체 관계를 설명하겠습니다 :Apache Solr 스키마 구성

두 개의 텍스트 필드, 제목 및 설명이있는 Movie 객체를 가져옵니다. 영화는 사용자가 태그와 연관시킬 수 있습니다. 이 태그는 사용자에게 고유하며 다른 사용자에게는 보이지 않습니다. , User1Tags "영화의 설명"

"영화 제목": "이 tag1", "이 tag2" User2Tags : "행동", "SOMETHINGELSE"

그래서 예를 들어 영화는 다음과 같이 할 수

user1이 영화를 검색 할 때 "action"을 입력하면 위의 영화가 표시되지 않도록 schema/solr 쿼리를 설계해야합니다. 이는 user2가 user1이 아닌 "Movie Title"과 "action"을 연결했기 때문입니다.

상황은 나는 생각했다 :

1) 쿼리 필터 -이 영화 당 인덱스가 구축 한 번으로 작동하지 않는 것, 나는 모든 사용자 태그가 영화의에 묶여있을 필요가 없도록하는 방법을 볼 수 없습니다 색인.

2) 영화와 태그 연결을위한 별도의 코어이며 검색 당 두 개의 쿼리 만 수행합니다. 나는 내가 이런 식으로 할 수 있다는 것을 알고 있지만, 또 다른 핵심을 만드는 것은 나에게 과도한 것처럼 보인다.

다른 옵션이 있습니까? 아니면 1을 구현하는 방법이 있습니까? 아니면 가장 간단한 옵션 인 옵션 2입니까? Solr을 사용하여 무엇을하고 있는지 알고있는 사람들이 어떻게 할 수 있습니까?

답변

1

몇 명의 사용자가 있습니까?

많지 않은 경우 동적 필드 tag_user1, tag_user2을 (를) 가질 수 있으며 eDismax 필드 목록을 수정하여 일치 또는 일치하지 않게 할 수 있습니다 (예 : 필드 이름 별칭을 사용하여.

또 다른 옵션은 값 앞에 userid를 붙이는 것입니다. 따라서 태그 필드는 user1_tag1, user1_tag2, user2_action, user2_somethingElse가됩니다. 그런 다음 쿼리 체인에서 사용자의 검색 토큰에 접두어를 붙이며 사용자의 접두어가 붙은 사용자 지정 필터 만 필요합니다.

+0

몇 명의 사용자가 문제를 생성하기 시작합니까? – thatidiotguy

+0

공연이 어려워 질 때 :-) 이런 종류의 질문에 대한 명확한 대답은 결코 없습니다. 그것은 단지 테스트의 문제입니다. 하지만 5-10 명의 사용자가있는 경우 동적 입력란을 사용하는 것이 좋습니다. 당신이 수백 또는 수천에 있다면, 그것은 아마도 너무 많이입니다. –

+0

안녕하십니까. 귀하의 답변 부분을 사용하여 검색을 구현하는 과정에 있음을 알려 드리고자합니다. 새로운 응답에 정보를 추가하거나 동의하기 위해 돌아 오기 전에 모든 것을 작동시키고 성능을 테스트하기를 기다리고 싶었습니다. 양해 해 주셔서 감사합니다. – thatidiotguy