2017-09-09 1 views
0

Azure에서 찾고 있습니다. 메시지 서비스를 검색하십시오. 매우 단순화 된, 우리는 푸른 앱 서비스 (실행 .NET) 및 SQL 애저에 두 개의 테이블이 있습니다Azure에서 맞춤 검색 검색

  • 메시지 : 아이디, 제목, 본문을, [...]
  • MessageRecipient : 아이디, messageID 설명, 사용자 아이디 , [...]

하나의 메시지에는 1 : N 수신자가 있습니다.

제목과 본문 본문을 검색하는 색인을 원하지만 현재 사용자가 메시지를받는 사람으로 결과를 필터링해야합니다. 나는 이것을 구현하는 좋은 방법을 찾지 못해 대량으로 잘 확장됩니다. 인덱스에서 모든 검색 결과를 반환 한 다음 내 응용 프로그램에서 UserId를 필터링하면 많은 불필요한 오버 헤드가 발생합니다. 그리고 각 UserId에 대해 중복 된 각 메시지의 색인을 생성하는 것은 더욱 어렵습니다.

받는 사람 필터링 된 메시지 검색을 어떻게 구현하면 좋을까요?

감사합니다, TGM 내 검색 색인의 컬렉션 (Edm.String) 데이터 형식을 활용 한 유사한 상황에서

답변

3

.

{ 
    messageId : 1, 
    subject : "Why Azure Search is cool", 
    body: "Just because", 
    recipientIds : ["123", "456", "789"] 
} 

recipientIds 필드 유형 컬렉션 (Edm.String)으로 정의 된 인덱스 스키마 : 그래서 색인에 들어있는 예제 문서는 다음과 같이 보일 것입니다.

그런 다음 "모든"OData 식을 사용하여 검색을 필터링 할 수 있습니다. 이 같을 것이다받는 사람 ID에 123 필터 식을 보낸 메시지를 발견하고 싶어한다면, :

$filter=recipientIds/any(r: r eq '123') 

자세한 내용은 Azure Search OData expression docs를 참조하십시오.

+1

멋진 접근 방식. 고마워, 나는 그것을 조사 할 것이다. – TGM