소프트웨어 엔지니어링에서 우리는 항상 인덱스를 생성하지만 (예 : 데이터베이스) 많은 사람들이 반전 인덱스에 대해 이야기하는 것을 들었습니다. 둘 사이에 근본적으로 다른 것이 있습니까? 그들은 같은 소리를냅니다.
소프트웨어 엔지니어링에서 우리는 항상 인덱스를 생성하지만 (예 : 데이터베이스) 많은 사람들이 반전 인덱스에 대해 이야기하는 것을 들었습니다. 둘 사이에 근본적으로 다른 것이 있습니까? 그들은 같은 소리를냅니다.
답변:
일반적인 용도 중 하나는 "... 빠른 전체 텍스트 검색 허용"입니다.
두 가지 유형은 방향성을 나타냅니다 . 하나는 인덱스를 통해 앞으로 이동하고 다른 하나는 인덱스를 통해 뒤로 이동 (반대)합니다. 그게 다야. 여기서 밝혀 낼 수수께끼가 없습니다. 그렇지 않으면 두 유형이 동일합니다. 그것은 당신 이 가지고 있는 정보 와 결과적으로 당신이 찾고자 하는 정보에 대한 질문 일뿐 입니다.
귀하의 문의 사항을 해결하기 위해 실제로 오늘날 사용되는 이유를 알 수있는 방법이 없다고 생각합니다. 것이 중요 유일한 이유는 어떤 정의 forward
하고있는 일이 것은 inverted
우리가 그들에 대해 대화를 할 수 있도록하고, 모든 사람들이 우리에 대해 얘기하고 방향을 알고있다. "왼쪽"과 "오른쪽"이라는 용어를 생각해보십시오. 이들은 상대적입니다. 단어가 의미를 갖기 위해서는 어느 것이 "왼쪽"이고 어떤 것이 "오른쪽"인지 모두가 동의해야한다는 점을 제외하고는 상관 없습니다. 문화로서 우리가 좌우로 뒤집기로 결정했다면 합의 된 의미가 바뀌었기 때문에 "우회전"과 "좌회전"이 무엇인지 파악하는 데 동일한 문제가있을 것입니다. 그러나 이름은 임의적입니다. 의미에.
"용어를 정의하지 마십시오"라고 묻는 귀하의 의견에서 요점을 놓치고있는 것입니다. 그리고 그들 사이에 전혀 차이가 없을 때 단어에 얽매이는 것 같습니다.
향후 독자를 위해 몇 가지 "앞으로"및 "반전 된"색인 예제를 제공하겠습니다.
인덱스의 역이 수학 에서 함수 의 역과 같다고 생각한다면, 역은 다른 형태를 가진 특별한 것입니다. 여기에서는 그렇지 않습니다.
검색 엔진에는 문서 목록 (웹 사이트의 페이지)이 있으며 여기에서 키워드를 입력하고 결과를 다시 얻을 수 있습니다.
기대 지수 (또는 인덱스)는이다 문서의 목록 , 그리고 어떤 단어 것은 그들에 나타납니다. 웹 검색 예에서 Google은 웹을 크롤링하여 문서 목록을 작성하고 각 페이지에 나타나는 단어를 파악합니다.
반전 지수 는 IS 단어의 목록 , 그리고 그들이 표시되는 문서. 웹 검색 예에서 단어 목록 (검색 쿼리)을 제공하면 Google이 문서 (검색 결과 링크)를 생성합니다.
그것들은 둘 다 색인입니다. 그것은 당신이 어떤 방향으로 가고 있는지에 대한 질문 일뿐입니다. 정방향은 문서-> 대-> 단어에서, 반전은 단어-> 대-> 문서에서입니다.
또 다른 예는 DNS 조회 (호스트 이름을 받아 IP 주소를 반환)와 역방향 조회 (IP 주소를 받아 호스트 이름을 제공)입니다.
책 뒷면의 색인은 위의 예에서 정의한 것처럼 실제로 역 색인 입니다. 단어 목록과 책에서 찾을 수있는 위치입니다. 책에서 목차는 정방향 색인과 같습니다. 이는 책에 포함 된 문서 (장)의 목록입니다. 단, 해당 섹션에 단어를 나열하는 대신 목차는 내용에 대한 이름 / 일반 설명 만 제공합니다. 해당 문서 (챕터)에 포함되어 있습니다.
휴대 전화 의 정방향 색인 은 연락처 목록이며 이러한 연락처와 연결된 전화 번호 (휴대폰, 집, 직장)입니다. 그만큼역 색인은 수동으로 전화 번호를 입력 할 수 있습니다 것입니다, 당신이 명중 할 때 휴대 전화가 전화 번호를 가지고 있기 때문에, 당신은 오히려 수보다, 그 사람의 이름을 볼 "전화"당신에게 그와 관련된 접촉을 발견했다.
그들은 이미 전방 지수가 있기 때문에 그것을 반전이라고 불렀습니다. 두 부분으로 구성된 검색 엔진의 예를 들어 보겠습니다. 첫 번째 부분은 문서에서 단어로 색인을 작성하는 "웹 크롤러 및 파서"이고, 두 번째 부분은 단어에서 문서로 색인을 작성하는 검색 데이터베이스입니다. 첫 번째 인덱스가 존재하기 때문에 자연스럽게 두 번째 인덱스를 역 인덱스라고 부릅니다.
책의 목차 (목차)를 색인으로 지정하면 책 끝에있는 색인을 "역 색인"으로 호출해야합니다. 또는 반대로 TOC를 역 인덱스로 호출 할 수 있습니다.
inverted index
우리 삶의 모든 정상적인 색인이 이미 inverted
.
일반적으로 인덱스에 대해 말할 때 애플리케이션 속도를 높이기 위해 수행 된 일부 추가 계산 또는 저장된 프로 시저 결과를 의미합니다 (예 : MySQL 또는 기타 RDBMS Consult MySQL the docs). ). 인덱싱은 캐싱 등과 관련 될 수도 있습니다.
역 인덱스는 주로 (전체 텍스트) 검색을위한 구조로 파일을 생성합니다.
반전 된 인덱스는 두 개의 기본 파일로 구성됩니다.
어휘에는 텍스트에서 추출한 일반적인 단어가 있습니다 (물론 대명사와 같은 블랙리스트 단어를 필터링 한 후). 발생 파일은 단어와 문서 간의 연결을 유지합니다 (word1은 doc3이 아닌 doc1 및 doc2에 나타남). 그것은 행렬의 형태로 표현됩니다.
위의 이미지는 언급 된 두 파일을 만드는 과정을 보여줍니다.
이 문제에 더 관심이 있다면 Ricardo Yated-Modern Information Retrieval ( 아마존에서보기)이 쓴 훌륭한 책을 추천 할 수 있습니다 .
도움이 되었기를 바랍니다 :-)
normalocity 는 이미 forward index와 inverted index를 훌륭하게 구분 했지만, 왜 하나는 forward index이고 다른 하나는 inverted index라고 부르는 이유에 대해서는 아마도 이것이 그들이 그렇게 불리는 이유 일 것입니다.
검색 엔진 크롤링 및 색인 생성 (또는 책 색인 작성)의 예를 들어, 웹 페이지를 크롤링 (또는 책 읽기)하거나 앞으로 진행 하는 동안 정방향 색인을 동시에 작성할 수 있습니다 . 따라서 크롤링 할 웹 페이지가 10 개 (또는 책에 10 개의 장)가있는 경우 첫 번째 웹 페이지를 크롤링 (첫 번째 장 읽기) 한 다음 웹 페이지에 나타나는 단어 (장에 나타나는 단어) 목록을 만들고 계속할 수 있습니다. 다른 웹 페이지 (다른 장)에 대해이 프로세스를 수행하므로 10 개의 웹 페이지를 모두 크롤링 할 때 (10 개 장 모두 읽기) 순방향 색인은 포함 된 단어 목록을 가리키는 각 웹 페이지 (챕터)로 완성됩니다 .
그러나 반전 된 색인을 만들려면 10 개의 웹 페이지를 모두 크롤링 (10 개의 장을 읽음) 한 다음 각 문서 목록에서 각 단어를 가져 와서 해당 단어가 포함 된 문서를 찾아야합니다. 따라서 이것은 웹 페이지를 크롤링 한 후 뒤로 이동하는 것과 같습니다 (책의 챕터 읽기). . 그래서 그것은 역 인덱스라고 불립니다.
이것은 단지 내 추측입니다.
색인에는 여러 유형이 있습니다. 예를 들어, B- 트리, R- 트리, 해시 ... 다른 목적을 위해 올바른 인덱스를 선택해야합니다.
반전 인덱스는 특별한 것입니다. 일반적으로 전체 텍스트 검색 엔진에서 사용되는 반전 된 인덱스입니다. 역 색인을 사용하면 문서 (또는 문서 세트)에서 가능한 한 빨리 단어의 위치를 찾을 수 있습니다. 메모리와 CPU의 한계를 생각해보십시오. 다른 인덱스로는이 작업을 완료 할 수 없습니다.
자세한 내용은 lucene 문서를 읽을 수 있습니다. 오픈 소스 검색 엔진입니다. http://lucene.apache.org/java/docs/index.html
"반전 된 단어 색인"이라는 용어는 여러 단어를 포함하는 단일 문서와 여러 문서 목록을 포함하는 (또는 식별하는) 각 고유 단어의 관계 변경을 나타냅니다. 이것은 효과적으로 일대 다 관계 (Docs to Words)를 취하고이를 반전 (또는 반전)하여 새로운 "반전 된"일대 다 관계가 존재하도록하는 것입니다. 이는 Many-와 관련된 각각의 고유 한 단어입니다. 문서 (즉, 해당 단어가 포함 된 모든 문서). 그 기원은 정말 간단합니다. "역 인덱스"라는 용어는 컴퓨터와 전자 고속 인덱싱이 존재하기 훨씬 이전에 동일한 유형의 수동 인덱스를 설명하는 데 사용되었습니다 (예, 저는 오래되고 괴짜 프로그래머입니다. Grace Hopper를 "달콤한 아가씨"라고 생각할만큼 나이가 들었습니다. COBOL이 반짝이는 새로운 언어 였을 때 구애하기에 적절한 나이). 우리는 가끔 유용하고 아마도 귀중한 역사적인 정보 비트를 제공 할 수 있으므로 아직 우리를 버리지 마십시오. 개인 RAM이 여전히 작동 중일 때입니다. [이를 드러내고 웃다]
반전 된 인덱스에서는 다음과 같은 형식이 있습니다.
word1-> 발생하는 문서 목록 (정렬 된 순서)
word2-> 발생하는 문서 목록 (정렬 된 순서)
.NET에서 단어가 나오는 문서를 찾을 수 있으므로 검색 엔진 쿼리 처리에 매우 유용합니다.
감독되는 머신리스를 사용하여이 역 색인을 작성할 수 있습니다.