2012-03-09 2 views
1

현재 프로젝트에서 사용자는 like 곡을들을 수 있습니다. 이제 노래 검색을 추가하여 사용자가 전에 liked 인 노래를 검색 할 수 있습니다.지정한 사용자의 문서를 검색하는 방법은 무엇입니까?

이전에 xapian을 사용하여 검색 엔진을 구현했으며 문서 색인을 정기적으로 작성해야했습니다.

필자의 경우 모든 사용자의 노래에 대한 색인을 독립적으로 작성해야합니까?

검색 결과가 real-time 이상이되도록하려면 짧은 시간마다 점진적으로 색인을 작성해야합니까?

답변

2

별도로 질문하십시오.

모든 사용자의 노래에 대한 색인을 독립적으로 작성해야합니까?

아니요; 이러한 종류의 상황에 대한 일반적인 기술은 각각의 like을 노래에 대한 정보와 추가로 사용자의 식별자로 따로 색인화하는 것입니다. 그런 다음 검색 할 때 실제로 로그인 한 사용자 식별자로 사용자의 자연 텍스트 검색 결과를 필터링하고 싶습니다.

Xapian에서 사용자를 나타내는 용어를 추가하면됩니다 (적절한 접두어, 따라서 ID가 175 인 사용자의 경우 XU175 일 수 있습니다.) 그리고 OP_FILTER을 사용하여 로그인 한 사용자 만 검색하도록 제한 할 수 있습니다.

[실시간 인덱싱을 지원하려면] 짧은 시간마다 인덱스를 점진적으로 구축해야합니까?

이것은 전적으로 사용중인 검색 시스템에 따라 다릅니다. Xapian을 사용하면 생성 한 데이터베이스를 주기적으로 하나의 기본 데이터베이스로 압축 할 수 있습니다. 또는 Xapian이 싱글 라이터이기 때문에 큐에 새로운 좋아하는 사람을 배치하고 그 사람을 끄고 색인을 생성하는 단일 프로세스가있는 것처럼 직렬화하는 방법을 찾고 싶을 수도 있습니다. 데이터베이스에 저장합니다. XPSian 개발자 중 한 사람이 작성한 과 같은 역할을하는 Restpose을 사용하면 Lucene에 대한 해결책이 될 수 있습니다.

하나의 데이터베이스로 색인을 생성 한 다음 다른 데이터베이스로 복제하고 복제 된 버전을 검색하여 장래에 수평 확장 옵션을 제공 할 수도 있습니다. Xapian 설명서에는 discussion of replication이 있습니다.

관련 문제