나는 음악 재생 목록을위한 검색 응용 프로그램을 작성 중입니다.검색 가능성을 위해 데이터를 구성하는 방법
장르 및 파일 형식은 재생 목록과 재생 목록이 다르며 때로는 재생 목록 내에 차이점이 있습니다. '동의어'태그의 개념도 있습니다 (예 : 도시는 힙합과 r &b를 모두 포함하지만 그 반대는 아닙니다).
다음은 검색어 및 예상되는 결과 목록입니다.
복음 : 적어도 하나의 복음의 노래로 모든 재생 목록을 반환해야합니다. 모든 복음 노래가 담긴 재생 목록이 먼저 표시됩니다. 도시 : 모든 r & b 및 hiphop을 반환해야합니다. 다시 모든 도시 트랙과 함께 재생 목록이 먼저 나타납니다. 힙합 : 모든 힙합을 반환해야하지만 r이 아님 & b. flac : flac 파일이 포함 된 모든 재생 목록을 반환해야합니다. 순수한 flac 인 것에서 시작. 힙합 FLAC는 : 다른 힙합 오디오 힙합과 FLAC 다음에, 최초의 힙합 FLACS를 반환해야합니다 : 만 힙합 오디오 힙합 FLACS를 반환해야합니다 : 힙합 FLACS, 힙합 MP3 파일 등을 반환해야
난 그냥이 프로젝트를 시작 해요으로 , 나는이 모든 것을 색인화하는 최선의 방법을 생각하고있다. Lucene과 같은 전문 검색이 여기에 사용됩니까? 참고 이러한 재생 목록을 설명하는 텍스트가 없지만 일부를 생성 할 수 있습니다.
나는이 모든 용어를 "태그"로 구성하고이를 다 대다 (many-to-many) 데이터베이스에 저장하려고 생각하고 있습니다.
테이블 : 플레이리스트 (PK (ID), 내림차순) 테이블 : 태그 (PK (ID), 내림차순) 테이블 : playlist_has_tag (PK (LINK_ID, tag_id))
는 도시 == 힙합을 해결하기 위해, ||
테이블 : tag_synonyms (PK (tag_id, synonym_tag_id)) 나는 도시가 힙합과 RNB을 포함 나타 내기 위해 두 기록이있을 것이다 다음
: 의 도시 태그 ID RNB 일, 나는 어쩌면 tag_synonyms 테이블을 추가합니다 , hiphop의 태그 id 도시의 태그 id, rnb의 태그 id
이 접근 방식을 사용하면 쿼리가 복잡해질 수 있습니다.
CouchDB를 여기에서 사용할 수 있습니까? 현재 PostgreSQL을 사용하고 있습니다. 이런 종류의 소프트웨어를 쉽게 만들 수있는 소프트웨어가 있습니까?
내가 좋아하는 미래의 복잡한 검색어를 드릴 다운하고 지원할 수 있도록하고 싶습니다 :
(힙합 또는 집)과 파일 형식 : MP3와 작품 : 더
는또한 기간 같은 것들을 포함하지 등등.
나는 모든 의견이 왜곡 된 이유에 대해 궁금해합니다. 모두가 납득할만한 것 같습니다. – nathaniel
나도 궁금해! 이제 나는 그들 (대부분)을 upvoted했습니다. 공정성, 5 년 후 :-) – KajMagnus