2010-03-01 4 views
4

StackOverflow를 사용하면 태그별로 게시물을 검색 할 수 있으며 태그의 교차 부분을 기준으로 필터링 할 수 있습니다. ruby x mysql x tags. 그러나 일반적으로 태그 지정에서 여러 개의 조인을 사용하여 MySQL에서 이러한 목록을 검색하는 것은 비효율적입니다. 필터별로 다중 태그 쿼리를 구현하는 데 더 효과적인 방법은 무엇입니까?태그를 여러 개 사용하여 게시물을 필터링하여 성능이 좋은 모든 태그가 포함 된 게시물을 반환합니다.

이 문제에 대한 NoSQL 접근 방식이 있습니까?

답변

2

NoSQL 또는 문서 위주의 시나리오에서 문서의 일부로 실제 태그를 포함 할 수 있습니다 (목록으로 저장 됨). "couchdb"로이 질문에 태그를 추가 했으므로이를 예제로 사용하겠습니다. 여러과의 HTTP POST를 발급 할 수 있습니다, CouchDB를에서

{ 
    "_id": "_design/tags", 
    "language": "javascript", 
    "views": { 
     "all": { 
     "map": "function(doc) { 
      emit(doc.tags, null); 
     }" 
     } 
    } 
} 

:

{ 
    "_id": <generated>, 
    "question": "Question?", 
    "answers": [... list of answers ...], 
    "tags": ["mysql", "tagging", "joins", "nosql", "couchdb"] 
} 

그런 다음, 태그에 의해 키가 뷰를 생성 :

CouchDB를에서 "게시"문서처럼 보일 수 있습니다 열쇠, 원한다면. 예는 the documentation입니다. 이 기법을 사용하면 여러 태그로 검색 할 수 있습니다.

참고 : 위의 값을 null로 설정하면보기가 작게 유지됩니다. 실제 도큐멘트를 보려면 쿼리에 include_docs=true을 사용하십시오.

관련 문제