2009-06-27 4 views
2

이러한 태그 및 가능한 새 태그에 대해 구문 분석해야하는 백만 개의 태그 집합과 텍스트 집합이 있다고 가정 해 보겠습니다. 태그의 양은 생각의 문제를 설명하기위한 예일뿐입니다. 선형적인 방식으로 반복하기에는 너무 많은 것, 메모리 등에서는 너무 많이 반복하는 것입니다.효과를 유지하면서 텍스트에 자동 태그를 지정하는 방법은 무엇입니까?

어쨌든 나는 풋 프린트가 적은 솔루션을 생각할 수 없습니다. 그리고 그것은 빠른 머무른다). 나는 트레이드 오프를 기대해야한다는 것을 알고 있지만, 나는 몇몇 개념을 간과하고 있다고 가정한다.

적용된 태그가 텍스트 자체에 포함되어 있지 않을 수 있으므로 지능형 태그 ("마이클 잭슨"= "아티스트"등)에 특히 유용합니다.

인기있는 태그 및 거대한 SQL 쿼리의 캐싱,이 문제를 해결하는 가장 효과적인 방법은 무엇입니까?

  • 을 내가 사용 동의 :

    내가 코멘트 공간에 제한된 해요 때문에

    , 내가 여기에 몇 가지 의견을 추가 할 수 있도록 (충분히 재미 있고, 나는이 질문 :-) 자신을 태그했습니다) 정수 해시는 속도를 향상시킵니다. 좋은 생각.

  • 해시가 반복 문제를 해결하지 못함 (태그 목록과 단어 또는 단어 조합을 확인하면서 각 해시/태그를 반복 함)
  • "hello world"와 같은 텍스트로 가정합니다. 이 텍스트에는 3 가지 잠재적 태그 ("hello", "world"및 "hello world")가 있습니다. 태그 목록에는 "hello"만 포함될 수 있지만 구문 분석 후에 "world"또는 "hello world"가 추가 될 수 있습니다.이 태그는 텍스트에 적용되지 않습니다.

문제 :

  • , 책 크기의 텍스트를 가정하면 모든 조합을 반복 ("나인 인치 네일스 (Nine Inch Nails)"처럼 만의이 조합 제한이 4 개 단어라고 가정하자) 데이터베이스가 필요에 태그를 비교 오랜 시간, 심지어 정수 해시를 사용한다고 가정합니다.
  • 태그 목록은 잠재적으로 길기 때문에 저장된 태그를 반복하는 것은 아마도 느립니다.
  • 태그 업데이트는 텍스트의 양과 길이에 따라 텍스트에 대한 전체 텍스트 검색을 의미 할 수 있습니다. 이는 잠재적으로 db killer이고 전혀 효과적이지 않을 수 있습니다.
  • "관련성 높은"새 태그를 어떻게 자동으로 찾을 수 있습니까? ("Nine Inch Nails"는 음악에 대한 기사에서 마음에 새긴다. 그러나 "새로운 노래를 발표했다"는 좋은 태그를 만들지는 못했다.) 그것은 아마도 자신의 문제 일 것입니다.

답변

1

들어오는 텍스트의 각 단어를 해시하고 일치시켜야하는 태그의 해시와 일치시키는 데 사용합니다. 데이터베이스를 사용하여 해시 값을 저장하고 조회하여 메모리에서 할 필요가 없습니다.

+0

효율성을 높이는데 어떻게 도움이되는지 모르겠습니까? 난 여전히 같은 해시 모든 반복 해를 실행해야 할거야 SELECT x FROM table WHERE hash =? - 해시를 사용하지 않는 것과 실질적으로 동일하며 (SELECT x FROM table WHERE tag =?) 이점을 제공하지는 않지만 해시의 단점은 일반적으로 평균 키워드보다 길어 저장 요구 사항 및 쿼리 가중치가 증가합니다. – Flim

+1

해시는 키워드보다 길지 않습니다. 해시는 태그의 수에 따라 임의의 길이가 될 수 있지만 32 비트 수는 트릭을 수행하며 4 글자 단어와 같습니다. 공간을 절약하려면 16 비트를 사용하십시오. 해시는 인덱싱되므로 반복이 발생하지 않습니다.모든 것을 메모리에 저장하지 않는 한 얻을 수있는만큼 효율적입니다. –

+0

죄송합니다. 물론 그렇습니다. 어떻게 든 나는 해시를 그렇게 생각하지 않았다. 가르쳐 주셔서 감사합니다 :-) – Flim

관련 문제