2017-12-13 1 views
0

아마도 내가 뭘 찾고 있는지 모르기 때문에이 질문의 제목이 조금 이상 할 수 있습니다.여러 태그로 데이터 세트 검색

나는 몇 가지 데이터를 가지고 있습니다. 문자열 및 여러 개의 태그가 연관되어 있습니다. 이제는 문자열을 사용하여 데이터를 검색하는 기능을 원합니다.

편집 : 문제는 문자열 비교 또는 하위 문자열이 아닙니다 검색! 문제는 결과에서 데이터 개체로의 연결입니다. 여기

동영상 예 :

"Title1" tags: "genre1" "genre2" "actor1" "actor2" 
"Title2" tags: "genre2" "actor2" "actor3" 
"Title3" tags: "genre2" "genre3" "actor1" "actor3" 

Search for "genre2" -> "Title1", "Title2", "Title3" 
Search for "Title1" -> "Title1" 
Serach for "actor1" -> "Title1", "Title3" 

다른 예 :

  • 유튜브 : 동영상 검색 ...
  • 아마존 : "TV"하지만 "TV"검색 제목에있을 필요는 없습니다.

내 마음에있는 유일한 점은 모든 가능성 목록을 가리키는 멀티 맵입니다. 그런 다음 검색 문자열을 모든 키와 타다와 비교해야합니다. 그러나 나는 목록의 미친 금액을 가지고 있기 때문에 이것이 좋은 해결책이라고 믿을 수 없다 ...

누구든지 내가 무엇을 찾고 있는지, 그리고 어떻게 이것을 구현할 수 있을지 생각해 낼 수 있을까? 나는 Qt에서 C++을 사용한다. Qt가 어떤 식 으로든 나를 도울 수 있다면 나는 모른다.

편집 : 나는 이런 식으로 모두 함께 키워드를 추가 할 수 있습니다

"Title1 genre1 genre2 actor1 actor2" 
"Title2 genre2 actor2 actor3" 
"Title3 genre2 genre3 actor1 actor3" 

는 데이터 객체에이 키를 사용하여지도를 만듭니다. 그런 다음 문자열 검색을 수행하고 검색 문자열이 키의 하위 문자열 인 모든 문자열을 가져와야합니다.

그러나 이것은 좋은 해결책입니까? 제목에서 일치하는 항목의 우선 순위를 지정하려면 어떻게해야합니까?

+4

실제 데이터베이스를 사용해 보셨습니까? 아마 sqlite? –

+0

@RetiredNinja 예,하지만 현재 내가 필요한지 확실하지 않습니다. – Darkproduct

+0

이것을 해결하는 가장 좋은 방법은'suffix tree' 또는'suffix array'입니다. 'suffix tree'를 사용한다면 잎의 문자열에 해당하는 모든 제목의 색인 목록을 사용하십시오. – abdullah

답변

1

많은 데이터가 있거나 데이터를 다른 컴퓨터로 마이그레이션하려는 경우 Qt에 내장 된 SQL 기능을 사용해야합니다.

+0

데이터가 로컬 파일 시스템의 다른 데이터 집합이기 때문에 데이터가 다른 컴퓨터로 전송되는 것을 기대하지 않습니다. – Darkproduct