2

Lucene, Elasticsearch :면 검색, 전체 텍스트 검색, 대단원!그래프, 패싯, 전체 텍스트 : 모든 세상에서 최고?

Neo4j, 아마도 타이탄 : 그래프 검색 awesomeness!

하지만 패싯, 전체 텍스트 및 그래프를 결합하는 쿼리에 적합한 전략은 무엇입니까? 그래프 검색 결과를 구체화하고 이것을 패싯/전체 텍스트 쿼리로 옮기고 싶지 않습니다. 이 세계를 결합하는 방법? 여기


은 예입니다

  • 패싯 – 우리는 수정 된 등의 측면 날짜, 상태, 항목 유형 (그리고 훨씬 더 "항목"을 가지고,하지만 이러한 항목의 필드/패싯도 구성 가능하며 합리적 평균 평균 의 패싯은 약 20 개입니다.
  • 그래프 – 이러한 "항목"은 서로 관련이 있습니다 (우리는 "업스트림"및 "다운 스트림"항목/관계에 대해 많이 이야기합니다), 그들은 다양한 방식으로 사용자와 관련이 있으며, 방향을 바꾸면 더 많은 사용자가 연결됩니다.) ,

    • 나에게 X 걸음 떨어져 주어진 아이템 목록에서 (A 그래프 우려)있는 모든 "항목을"표시 :

    이제 우리는 다음과 같은 질의를 할 싶습니다 등과 같은이며 지난 30 일 동안 수정되었습니다 (면 처리 관심 사항).

  • 지정된 항목에 연결된 사용자를 표시합니다. 지정된 항목에 대해 수정 또는 주석 달기를 의미하거나 해당 항목에서 x까지 떨어진 관련 항목을 표시합니다. 단, 관련 항목이 특정 상태에 있었고 해당 항목이 수정 된 후에 수정되었습니다.

당신은 루씬의 그래프를 모델링 할 수 있지만 큰 노 스타터를 보인다.

당신은 Neo4j에면을 추가 할 수 있습니다 (! 잘못 나를 증명),하지만 그것은 단지에 최적화되지 않은 성능 위험을 보인다. (그러나 어쩌면 당신은 다른 경험을 가지고 있습니다.)

아마도이 문제에 황금빛 총알이 있습니다.

+0

의견을 기반으로 한 질문입니다. – eliasah

+0

이 시점에서 저는 실제로 작업 솔루션을 찾고 있습니다. 의견을 바탕으로 "좋은 전략"에 대한 제 질문을 읽을 수있는 방법을 이해합니다.하지만 처음에는이를 수행하는 방법에 대한 답을 얻게되어 기쁘 며, 주관적인 질문을 행복하게 해결할 것입니다. –

+0

Sander, 나는 여기서 일하는 솔루션에 충분한 정보를 제공했다고 생각하지 않습니다. 이 질문을 읽은 독자는 만약 당신이 그런 것들을 조합 한 DB에 대해 질문 할 필요가있는 어떤 종류의 질문에 대한 예제를 제공하지 않는다면, 패싯, 전체 텍스트 및 그래프 검색을 결합함으로써 여러분이 의미하는 바를 이해하지 못할 것입니다. 나는 그것을 찔렀다. 그러나 나는 그것들이 단지 일반성 들임을 안다. 하지만 더 많은 정보 없이는 더 잘할 수 없습니다. – FrobberOfBits

답변

1

글쎄, 놀랍지 않게, 그것은 다릅니다. 이것이 다소 일반적인 대답으로 나오면 사과드립니다. 그러나 도전의 성격에 대해 자세히 설명하지 않으면 얻을 수있는 최선의 방법 일 수 있습니다.

먼저 쿼리 사용 사례와 관련 데이터 볼륨의 개요를 설명해야합니다. 이것이 바닐라 데이터베이스 였고 가능한 한 빨리 쿼리를 최적화하려고 시도한 경우 먼저 쿼리의 어느 부분이 가장 선택적인 것인지 확인하려고했습니다. 그런 다음 실행에 우선적으로 밀어 넣고 나중에 실행을 위해 쿼리의 선택하기 어려운 비트를 남겨 둡니다.이것은 우리가 다루고있는 잠재적 인 결과의 양을 신속하게 줄이는 이점이 있습니다.

그래서 검색, 전체 텍스트 검색 및 그래프 검색이 필요하다고 규정하겠습니다. 데이터와 원하는 패싯/텍스트/그래프 패턴을 볼 수 있다면 일반적으로 가장 배타적 인/선택적인 것을 우선 수행하십시오.

lucene의 그래프를 모델링하는 한,이 방법이 효과가 있다고 생각되지만,면 처리 된 검색 비트가 가장 필요하고 그래프 비트가 매우 원시적 인 경우에만 가능합니다. lucene의 최단 경로와 같은 작업은 고통 스럽습니다. (비록 시간이 충분하다면 오랫동안 불가능한 일이 없다는 것을 배웠지 만 충분한 시간이 없다면 거의 불가능하지 않기 때문에)

하이브리드도 가능합니다. neo4j,하지만 그들을 별도로 사용하고 그들을 연결). 나는 세부 사항없이 그것을 강력하게 (그러나 복잡하고 값 비싼) 방법이기 때문에 제안하기를 주저합니다.