Trong kỹ thuật phần mềm, chúng tôi tạo chỉ mục mọi lúc (ví dụ: trong cơ sở dữ liệu) nhưng tôi cũng nghe nhiều người nói về các chỉ số đảo ngược. Có điều gì đó khác nhau về cơ bản giữa cả hai? Chúng nghe giống như một điều.
Trong kỹ thuật phần mềm, chúng tôi tạo chỉ mục mọi lúc (ví dụ: trong cơ sở dữ liệu) nhưng tôi cũng nghe nhiều người nói về các chỉ số đảo ngược. Có điều gì đó khác nhau về cơ bản giữa cả hai? Chúng nghe giống như một điều.
Câu trả lời:
Một cách sử dụng phổ biến là "... để cho phép tìm kiếm toàn văn bản nhanh chóng."
Hai loại biểu thị hướng . Một cái đưa bạn tiến qua chỉ mục và cái kia đưa bạn lùi (nghịch đảo) qua chỉ mục. Đó là nó. Không có bí ẩn nào để khám phá ở đây. Nếu không thì hai loại này giống hệt nhau, chỉ là câu hỏi bạn có thông tin gì và kết quả là bạn đang cố gắng tìm thông tin gì .
Để giải quyết thắc mắc của bạn, tôi không nghĩ thực sự có cách nào để biết tại sao việc sử dụng nó lại như ngày nay. Lý do duy nhất điều quan trọng là phải xác định cái nào là forward
và cái nào inverted
là để tất cả chúng ta có thể trò chuyện về chúng và mọi người đều biết chúng ta đang nói về hướng nào. Hãy nghĩ về các thuật ngữ "trái" và "phải": chúng là tương đối. Cái nào không quan trọng, ngoại trừ việc mọi người cần thống nhất cái nào là "trái" và cái nào là "phải" để các từ có nghĩa. Nếu, với tư cách là một nền văn hóa, chúng tôi quyết định lật trái và phải, thì bạn sẽ gặp vấn đề tương tự khi tìm hiểu thế nào là "rẽ phải" và "rẽ trái" vì ý nghĩa theo thỏa thuận đã thay đổi. Tuy nhiên, việc đặt tên là tùy ý, về ý nghĩa.
Trong nhận xét của bạn, nơi bạn hỏi, "vui lòng không chỉ định nghĩa các thuật ngữ", bạn đang thiếu điểm và tôi nghĩ bạn chỉ đang bị mắc kẹt với từ ngữ khi hoàn toàn không có sự khác biệt giữa chúng.
Vì lợi ích của những độc giả trong tương lai, bây giờ tôi sẽ cung cấp một số ví dụ về chỉ mục "chuyển tiếp" và "đảo ngược":
Nếu bạn đang nghĩ rằng nghịch đảo của một chỉ số giống như nghịch đảo của một hàm trong toán học , trong đó nghịch đảo là một thứ đặc biệt có dạng khác, thì bạn đã nhầm: đó không phải là trường hợp ở đây.
Trong công cụ tìm kiếm, bạn có một danh sách các tài liệu (các trang trên các trang web), nơi bạn nhập một số từ khóa và nhận lại kết quả.
Một chỉ số về phía trước (hoặc chỉ index) là danh sách các tài liệu , và những từ xuất hiện trong đó. Trong ví dụ tìm kiếm trên web, Google thu thập dữ liệu web, xây dựng danh sách tài liệu, tìm ra những từ nào xuất hiện trong mỗi trang.
Các chỉ số đảo ngược là danh sách các từ , và các văn bản, trong đó họ xuất hiện. Trong ví dụ tìm kiếm trên web, bạn cung cấp danh sách các từ (truy vấn tìm kiếm của bạn) và Google tạo ra các tài liệu (liên kết kết quả tìm kiếm).
Cả hai đều là chỉ mục - vấn đề chỉ là bạn đang đi theo hướng nào. Chuyển tiếp là từ tài liệu-> đến-> từ, đảo ngược là từ từ-> đến-> tài liệu.
Một ví dụ khác là tra cứu DNS (lấy tên máy chủ và trả về địa chỉ IP) và tra cứu ngược (lấy địa chỉ IP và cung cấp cho bạn tên máy chủ).
Chỉ mục ở phía sau của một cuốn sách thực sự là một chỉ mục đảo ngược , như được định nghĩa bởi các ví dụ ở trên - một danh sách các từ và nơi tìm chúng trong sách. Trong một cuốn sách, mục lục giống như một chỉ mục chuyển tiếp : đó là danh sách các tài liệu (chương) mà cuốn sách chứa đựng, ngoại trừ việc thay vì liệt kê các từ trong các phần đó, mục lục chỉ đưa ra tên / mô tả chung về những gì. có trong các tài liệu (chương) đó.
Các chỉ số về phía trước trong điện thoại di động của bạn là danh sách các địa chỉ liên lạc, và trong đó số điện thoại (di động, nhà, nơi làm việc) được liên kết với các địa chỉ liên lạc. Các chỉ số đảo ngược là những gì cho phép bạn tự nhập số điện thoại, và khi bạn nhấn "quay" bạn nhìn thấy tên của người đó, chứ không phải là số lượng, vì điện thoại của bạn đã đưa ra những số điện thoại và tìm thấy bạn liên lạc liên kết với nó.
Họ gọi nó là đảo ngược chỉ vì đã có một chỉ số chuyển tiếp. Lấy ví dụ về công cụ tìm kiếm, nó bao gồm hai phần: phần đầu tiên là "trình thu thập thông tin và phân tích cú pháp web" xây dựng chỉ mục từ tài liệu này sang từ khác, phần thứ hai là cơ sở dữ liệu tìm kiếm xây dựng chỉ mục từ từ này sang tài liệu khác. Bởi vì chỉ mục đầu tiên tồn tại, chúng tôi đương nhiên gọi chỉ mục thứ hai là chỉ mục đảo ngược.
Nếu bạn đặt tên TOC (Mục lục) của sách là chỉ mục, thì bạn nên gọi chỉ mục ở cuối sách là "chỉ mục ngược". Hoặc, theo cách khác, bạn có thể gọi TOC là chỉ số đảo ngược.
inverted index
mặc dù tất cả các chỉ số bình thường trong cuộc sống của chúng tôi đã được sử dụng như inverted
.
thông thường khi nói về chỉ mục, bạn có nghĩa là một số tính toán được thêm vào hoặc kết quả được lưu trữ của các thủ tục đã được thực hiện để tăng tốc ứng dụng (ví dụ: MySQL hoặc RDBMS khác Tham khảo tài liệu về MySQL ). Lập chỉ mục cũng có thể liên quan đến bộ nhớ đệm, v.v.
Chỉ mục ngược tạo tệp có cấu trúc chủ yếu là tương tác để tìm kiếm (toàn văn bản).
Chỉ mục được đảo ngược bao gồm hai tệp chính:
Trong từ vựng là những từ thông dụng được trích xuất từ văn bản (tất nhiên sau khi lọc những từ trong danh sách đen như đại từ). Tệp Occurences giữ kết nối giữa các từ và tài liệu (word1 xuất hiện trong doc1 và doc2, không xuất hiện trong doc3). Nó được biểu diễn dưới dạng ma trận.
Trong hình trên là quá trình tạo hai tệp được đề cập.
Nếu bạn quan tâm hơn nữa đến vấn đề này, tôi có thể giới thiệu cho bạn một cuốn sách tuyệt vời được viết bởi Ricardo Yated - Truy xuất thông tin hiện đại ( Xem nó trên Amazon ) - tôi nghĩ là khoảng trang 200.
Hy vọng nó giúp :-)
normalocity đã phân biệt tuyệt vời giữa một chỉ số chuyển tiếp và một chỉ số đảo ngược nhưng đối với câu hỏi tại sao một cái được gọi là chỉ số chuyển tiếp và cái kia là chỉ số đảo ngược, có lẽ đây là lý do tại sao chúng được gọi như vậy ---
Lấy ví dụ về thu thập thông tin và lập chỉ mục của công cụ tìm kiếm (hoặc xây dựng chỉ mục cho một cuốn sách), chỉ mục chuyển tiếp có thể được tạo đồng thời trong khi bạn đang thu thập thông tin các trang web (hoặc đọc sách) hoặc tiếp tục . Vì vậy, nếu bạn có 10 trang web để thu thập thông tin (hoặc 10 chương trong một cuốn sách), bạn có thể thu thập dữ liệu trang web đầu tiên (đọc chương đầu tiên), sau đó tạo danh sách các từ xuất hiện trong trang web (các từ xuất hiện trong chương) và tiếp tục quy trình này cho các trang web khác (các chương khác) vì vậy vào thời điểm bạn đã thu thập dữ liệu tất cả 10 trang web (đọc tất cả 10 chương), chỉ mục chuyển tiếp của bạn đã hoàn tất với mỗi trang web (chương) trỏ đến danh sách các từ mà nó chứa .
Nhưng để tạo một chỉ mục đảo ngược, bạn phải thu thập dữ liệu của tất cả 10 trang web (đọc 10 chương) và sau đó lấy từng từ từ mỗi danh sách tài liệu và tìm ra tài liệu nào chứa từ đó. Vì vậy, điều này giống như quay ngược lại khi bạn đã thu thập dữ liệu các trang web (đọc các chương của cuốn sách) . Vì vậy, nó được gọi là một chỉ số đảo ngược.
Đây chỉ là suy đoán của tôi.
Có nhiều loại chỉ số. Ví dụ: B-tree, R-tree, hash ... Với các mục đích khác nhau, chúng ta phải chọn đúng chỉ mục.
Chỉ số đảo ngược là một chỉ số đặc biệt. Chỉ mục đảo ngược thường được sử dụng trong công cụ tìm kiếm toàn văn. Sử dụng chỉ mục đảo ngược, chúng tôi có thể tìm ra vị trí của một từ trong tài liệu (hoặc bộ tài liệu) nhanh nhất có thể. Hãy nghĩ về giới hạn của bộ nhớ và cpu, chỉ số khác không thể hoàn thành công việc này.
Bạn có thể đọc tài liệu lucene để biết thêm chi tiết. Đó là một công cụ tìm kiếm mã nguồn mở. http://lucene.apache.org/java/docs/index.html
Thuật ngữ "Chỉ mục từ được đảo ngược" đề cập đến sự thay đổi mối quan hệ của một tài liệu đơn chứa nhiều từ, với mỗi từ duy nhất chứa (hoặc xác định) một danh sách nhiều tài liệu. Điều này đang thực hiện một cách hiệu quả Mối quan hệ một-nhiều (Tài liệu thành từ) và Đảo ngược (hoặc đảo ngược) nó sao cho một Mối quan hệ Một-nhiều "Đảo ngược" mới hiện tồn tại, là mỗi từ-duy nhất liên quan đến Nhiều- Tài liệu (tức là tất cả những gì có chứa từ đó). Nguồn gốc của nó thực sự rất đơn giản, và thuật ngữ "chỉ mục đảo ngược" đã được sử dụng để mô tả các chỉ mục thủ công cùng loại từ rất lâu trước khi máy tính và lập chỉ mục tốc độ cao điện tử thậm chí còn tồn tại (vâng, phải thừa nhận rằng tôi là một lập trình viên lão luyện, gần như đủ lớn để coi Grace Hopper là một "cô gái trẻ ngọt ngào" độ tuổi thích hợp để tán tỉnh trở lại khi COBOL là một ngôn ngữ mới sáng bóng). Vui lòng không loại bỏ chúng tôi vì chúng tôi thỉnh thoảng có thể cung cấp một hoặc hai tid-bit hữu ích và có thể có giá trị - khi RAM cá nhân của chúng tôi vẫn hoạt động. [cười toe toét]
trong các chỉ mục đảo ngược, chúng ta có dạng sau:
word1-> danh sách các tài liệu nó xuất hiện theo (thứ tự được sắp xếp)
word2-> danh sách các tài liệu nó xuất hiện theo (thứ tự được sắp xếp)
Nó rất hữu ích cho việc xử lý truy vấn của công cụ tìm kiếm vì nó cho phép chúng tôi tìm tài liệu mà từ xuất hiện trong đó.
Bạn có thể sử dụng tính năng rò rỉ máy được giám sát để xây dựng chỉ mục ngược này.
Một điểm khác biệt nữa:
Xử lý các bản cập nhật với chỉ mục đảo ngược là tốn kém so với chỉ mục chuyển tiếp.
Chỉ mục chuyển tiếp xử lý các cập nhật dễ dàng bằng cách chỉ phản ánh các thay đổi trong chỉ mục tài liệu tương ứng, trong khi trong chỉ mục đảo ngược, cùng một thay đổi phải phản ánh ở nhiều vị trí trên chỉ mục được đảo ngược.