program story

반전 된 인덱스와 일반 이전 인덱스의 차이점은 무엇입니까?

inputbox 2020. 9. 23. 07:35
반응형

반전 된 인덱스와 일반 이전 인덱스의 차이점은 무엇입니까?


소프트웨어 엔지니어링에서 우리는 항상 인덱스를 생성하지만 (예 : 데이터베이스) 많은 사람들이 반전 인덱스에 대해 이야기하는 것을 들었습니다. 둘 사이에 근본적으로 다른 것이 있습니까? 그들은 같은 소리를냅니다.


일반적인 용도 중 하나는 "... 빠른 전체 텍스트 검색 허용"입니다.

두 가지 유형은 방향성을 나타냅니다 . 하나는 인덱스를 통해 앞으로 이동하고 다른 하나는 인덱스를 통해 뒤로 이동 (반대)합니다. 그게 다야. 여기서 밝혀 낼 수수께끼가 없습니다. 그렇지 않으면 두 유형이 동일합니다. 그것은 당신 이 가지고 있는 정보 와 결과적으로 당신이 찾고자 하는 정보에 대한 질문 일뿐 입니다.

귀하의 문의 사항을 해결하기 위해 실제로 오늘날 사용되는 이유를 알 수있는 방법은 없다고 생각합니다. 것이 중요 유일한 이유는 어떤 정의 forward하고있는 일이 것은 inverted우리가 그들에 대해 대화를 할 수 있도록하고, 모든 사람들이 우리에 대해 얘기하고 방향을 알고있다. "왼쪽"과 "오른쪽"이라는 용어를 생각해보십시오. 이들은 상대적입니다. 단어가 의미를 갖기 위해서는 어느 것이 "왼쪽"이고 어떤 것이 "오른쪽"인지 모두가 동의해야한다는 점을 제외하고는 상관 없습니다. 문화로서 우리가 좌우로 뒤집기로 결정했다면 합의 된 의미가 바뀌었기 때문에 "우회전"과 "좌회전"이 무엇인지 알아내는 동일한 문제가있을 것입니다. 그러나 이름은 임의적입니다. 의미에.

"용어를 정의하지 마십시오"라고 묻는 귀하의 의견에서 요점을 놓치고있는 것입니다. 그리고 그들 사이에 전혀 차이가 없을 때 단어에 얽매이는 것 같습니다.


향후 독자를 위해 몇 가지 "앞으로"및 "반전 된"인덱스 예제를 제공 할 것입니다.

예 1 : 웹 검색

인덱스의 역이 수학 에서 함수역과 같다고 생각한다면, 역은 다른 형태를 가진 특별한 것입니다. 여기서는 그렇지 않습니다.

검색 엔진에는 문서 목록 (웹 사이트의 페이지)이 있으며 여기에서 키워드를 입력하고 결과를 다시 얻을 수 있습니다.

기대 지수 (또는 인덱스)는이다 문서의 목록 , 그리고 어떤 단어 것은 그들에 나타납니다. 웹 검색 예에서 Google은 웹을 크롤링하여 문서 목록을 작성하고 각 페이지에 나타나는 단어를 파악합니다.

반전 지수 는 IS 단어의 목록 , 그리고 그들이 표시되는 문서. 웹 검색 예에서 단어 목록 (검색 쿼리)을 제공하면 Google이 문서 (검색 결과 링크)를 생성합니다.

그것들은 둘 다 색인입니다. 그것은 당신이 어떤 방향으로 가고 있는지에 대한 질문 일뿐입니다. 정방향은 문서-> 대-> 단어에서, 반전은 단어-> 대-> 문서에서입니다.

예 2 : DNS

또 다른 예는 DNS 조회 (호스트 이름을 받아 IP 주소를 반환)와 역방향 조회 (IP 주소를 받아 호스트 이름을 제공)입니다.

예 3 : 책

책 뒷면의 색인은 위의 예에서 정의한 것처럼 실제로 역 색인 입니다. 단어 목록과 책에서 찾을 수있는 위치입니다. 책에서 목차는 정방향 색인 과 유사합니다 . 이는 책에 포함 된 문서 (장)의 목록입니다. 단, 해당 섹션에 단어를 나열하는 대신 목차는 내용에 대한 이름 / 일반적인 설명 만 제공합니다. 해당 문서 (챕터)에 포함되어 있습니다.

예 4 : 휴대 전화

휴대 전화 정방향 색인 은 연락처 목록이며 이러한 연락처와 연결된 전화 번호 (휴대폰, 집, 직장)입니다. 역 색인은 수동으로 전화 번호를 입력 할 수 있습니다 것입니다, 당신이 명중 할 때 휴대 전화가 전화 번호를 가지고 있기 때문에, 당신은 오히려 수보다, 그 사람의 이름을 볼 "전화"당신에게 그와 관련된 접촉을 발견했다.


그들은 이미 전방 지수가 있기 때문에 그것을 반전이라고 불렀습니다. 두 부분으로 구성된 검색 엔진의 예를 들어 보겠습니다. 첫 번째 부분은 문서에서 단어로 색인을 작성하는 "웹 크롤러 및 파서"이고, 두 번째 부분은 단어에서 문서로 색인을 작성하는 검색 데이터베이스입니다. 첫 번째 인덱스가 존재하기 때문에 자연스럽게 두 번째 인덱스를 역 인덱스라고 부릅니다.

책의 목차 (목차)를 색인으로 지정하면 책 끝에있는 색인을 "역 색인"으로 호출해야합니다. 또는 반대로 TOC를 역 인덱스로 호출 할 수 있습니다.


일반적으로 인덱스에 대해 말할 때 애플리케이션 속도를 높이기 위해 수행 된 일부 추가 계산 또는 저장된 결과를 의미합니다 (예 : MySQL 또는 기타 RDBMS Consult MySQL the docs ). 인덱싱은 캐싱 등과 관련 될 수도 있습니다.

역 인덱스는 주로 (전체 텍스트) 검색을위한 구조로 파일을 생성합니다.

반전 된 인덱스는 두 개의 기본 파일로 구성됩니다.

  • 어휘
  • 발생

어휘에는 텍스트에서 추출한 일반적인 단어가 있습니다 (물론 대명사와 같은 블랙리스트 단어를 필터링 한 후). 발생 파일은 단어와 문서 간의 연결을 유지합니다 (word1은 doc3이 아닌 doc1 및 doc2에 나타남). 그것은 행렬의 형태로 표현됩니다.

인덱싱 프로세스-반전 된 인덱스

위의 이미지는 언급 된 두 파일을 만드는 과정을 보여줍니다.

이 문제에 더 관심이 있다면 Ricardo Yated-Modern Information Retrieval ( 아마존에서보기)이 쓴 훌륭한 책을 추천 할 수 있습니다 .

도움이 되었기를 바랍니다 :-)


normalocity 는 이미 forward index와 inverted index를 훌륭하게 구별 했지만 왜 하나는 forward index라고 다른 하나는 inverted index라고 부르는지 에 대한 질문에 대해 아마도 이것이 그들이 그렇게 부르는 이유 일 것입니다.

Taking example of search engine crawling and indexing (or building index for a book), a forward index can be built simultaneously while you are crawling the web pages(or reading the book) or going forward. So if you have 10 webpages to crawl(or 10 chapters in a book) you can crawl the first webpage(read the first chapter) and then make a list of words which appear in the webpage(words which appear in the chapter) and continue this process for other webpages(other chapters) so by the time you have crawled all the 10 webpages(read all 10 chapters) your forward index is complete with each webpage(chapter) pointing to a list of words it contains.

But to make an inverted index you have to crawl all the 10 webpages(read the 10 chapters) and and then take each word from each documents list and figure out which documents contain that word. So this is like going backward once you have crawled the webpages(read chapters of the book). So its called an inverted index.

This is just my speculation.


There are many types of index. For example, B-tree, R-tree, hash... For different purposes, we must choose correct index.

Inverted index is a special one. Inverted index usually used in full text search engine. Use inverted index we can find out a word's locate in a document(or documents set) as fast as possible. Think about the limit of memory and cpu, other index can't finish this job.

You can read lucene document for more details. It's a open source search engine. http://lucene.apache.org/java/docs/index.html


in inverted indexes, we have the following form:

word1-> list of docs it occurs in (sorted order)

word2-> list of docs it occurs in (sorted order)

It is very useful for search engine query processing as it allows us to find docs that word occurs in .

You can use supervised machine learing to build this inverted index.


The term "Inverted Word Index" refers to the change in relationship of a single-document containing many-words, to each unique word containing (or identifying) a list of many-documents. This is effectively taking a One-to-Many Relationship (Docs to Words) and Inverting (or reversing) it such that a new "Inverted" One-to-Many Relationship now exists, which is each-unique-word relating to Many-Documents (i.e., all that contain that word). It's origin really is that simple, and the term "inverted index" was used to describe manual indexes of the same type long before computers and electronic high-speed indexing even existed (yes, admittedly, I'm an old, geezer programmer, almost old enough to have considered Grace Hopper a "sweet young lady" age appropriate for courting back when COBOL was a shiny new language). Please don't discard us geezers just yet, as we may occasionally provide a useful, and possibly even valuable, historical tid-bit or two - when our personal RAM is still working, that is. [grin]


또 다른 차이점 :

역 인덱스로 업데이트를 처리하는 것은 순방향 인덱스에 비해 비용이 많이 듭니다.

정방향 인덱스는 해당 문서 인덱스의 변경 사항 만 반영하여 업데이트를 쉽게 처리하는 반면, 반전 된 인덱스에서는 동일한 변경 사항이 반전 된 인덱스의 여러 위치에 반영되어야합니다.

참고 URL : https://stackoverflow.com/questions/7727686/whats-the-difference-between-an-inverted-index-and-a-plain-old-index

반응형