So sánh các thuật toán tìm kiếm chuỗi

Get Microsoft Silverlight

Logo ITICup

Lần 1
Năm 2009
Đầy đủ
iticup

Thu gọn
iticup_short

Ý nghĩa:

  • Sử dụng 3 mảng màu Red – Green – Blue (hệ màu chuẩn của máy tính) để thể hiện đây là sự kiện đặc trưng về tin học.
  • Cách sắp xếp mảng màu: Blue là màu của hy vọng, Red là màu của quyết tâm, Green là màu của sự sinh sôi phát triển. Cuộc thi đưa ra một đỉnh cao tri thức và các thí sinh đăng ký tham gia với hy vọng chinh phục được đỉnh cao này. Để làm được điều đó, thí sinh phải quyết tâm rèn dũa, chiến đấu với bản thân và thi đua với các thí sinh khác. Qua quá trình tôi luyện, kiến thức đâm hoa kết trái và thí sinh hoàn thiện hơn tri thức của mình.
  • Màu vàng tượng trưng vinh quang và sự sáng tạo. Cúp vàng vừa là mục tiêu, vừa là phương tiện giúp thí sinh đi đến được thành công.
  • 3 chữ I, T, I là viết tắt của Information Technology Innovation (sáng tạo trong công nghệ thông tin)
  • Chữ I cuối cùng trong cụm từ ITI được cách điệu thành hình người để khẳng định con người là nhân tố chủ thể của sự sáng tạo và quyết định sự thành công.
Lần 2
Năm 2010

Logo_ITICup2010

Ý nghĩa:

  • Logo mang tên đầy đủ của một cuộc thi "ITICup2010"
  • Trước logo là một biểu tượng của một con đường hướng ra xa, ý muốn gửi vào đây sự hoài bảo, vững chắc và luôn hướng vào một tương lai tốt đẹp, hướng về thời đại mà hẵn sẽ không ngừng phát triễn về CNTT, đồng thời cũng mở ra cho CNTT Việt Nam một tiềm năng mới đễ sánh với các nước khác trên thế giới.
  • Biểu tượng màu vàng như một chiếc cup, một điều gì đó mà các bạn tham dự cuộc thi cần hướng tới, trên đầu chiếc cup có một biểu tượng gắn liền giống như khẳng định thêm cho ngành CNTT Việt Nam trong con mặt của bè bạn quốc tế.
  • Màu sắc được thể hiện nói lên sự niềm tin của tuổi trẻ, sự khác khao của chiến thắng và đỉnh điểm của sự thăng hoa.

Lucene làm được gì?

Những người mới bắt đầu làm quen với Lucene thường nhầm lẫn nó là ứng dụng sẵn sàng để sử dụng, như một chương trình tìm kiếm file, một web crawler, một web search engine, đó đều không phải là Lucene. Lucene đơn thuần là một thư viện phần mềm, một bộ công cụ chứ không phải là một ứng dụng tìm kiếm có đầy đủ tính năng. Nó tập trung vào 2 quá trình indexing và searching và nó thực hiện 2 công việc này rất tốt, ngoài ra nó không hỗ trợ gì hơn. Lucene cho phép ứng dụng tự do làm việc với những qui luật nghiệp vụ đặc thù, trong khi giấu đi sự phức tạp đối với indexing và searching bên dưới các API đơn giản để sử dụng. Lucene là phần lõi và chương trình tìm kiếm là vỏ bọc bên ngoài.

Read more

Lucene là gì?

Lucene là một thư viện truy vấn thông tin (Information Retrieval – IR) có hiệu năng cao và mềm dẻo. Truy vấn thông tin liên quan đến quá trình tìm kiếm thông tin nằm trong tài liệu hoặc siêu dữ liệu mô tả tài liệu. Lucene cho phép thêm tính năng tìm kiếm vào trong ứng dụng. Nó là một dự án mã nguồn mở, miễn phí và ổn định, được cài đặt bằng ngôn ngữ Java, và là một dự án thành viên của Apache Software Foundation, phân phối dưới giấy phép Apache Software License. Do đó, trong những năm gần đây, Lucene là thư viện IR phổ biến nhất được sử dụng.

Read more

Các quá trình khác

Một search engine đầy đủ các tính năng, đặc biệt là chạy trên website, ngoài crawling, indexing và searching, thì một engine cũng cần phải có:

· Administration: theo dõi trạng thái của ứng dụng, cấu hình các thành phần khác nhau, chạy và dừng các máy chủ.

· Analytics: thống kê người dùng đang tìm kiếm gì, đưa ra lời hướng dẫn xem cái gì đang hoạt động và cái gì không.

· Scaling: đối với một ứng dụng tìm kiếm lớn, việc mở rộng theo cả khối lượng nội dung và số lượng yêu cầu tìm kiếm đồng thời là tính năng quan trọng.

Read more

Searching

Searching là quá trình dò tìm từ hay cụm từ trong các chỉ mục để xác định những document nào chứa chúng. Chất lượng của công việc tìm kiếm này được đánh giá bởi thang đo recall và precision. Recall cho biết hệ thống tìm ra những document có liên quan tốt như thế nào, trong khi precision cho biết khả năng của hệ thống loại bỏ các document không thích hợp.

Tuy nhiên, còn có những yếu tố khác cũng quan trọng không kém đối với quá trình searching. Như đã trình bày, tốc độ và khả năng tìm kiếm trên một khối lượng lớn văn bản là 2 trong số các yếu tố đó. Ngoài ra còn có thể kể đến như tính năng hỗ trợ câu truy vấn đơn và kép, wildcard, truy vấn mờ, xếp hạng kết quả, sắp xếp trên dữ liệu trả về, độ thân thiện của cú pháp truy vấn.

Searching trải qua 4 bước cơ bản: user interface, build query, run query và render results.

Read more

Indexing

Giả dụ có một số lượng lớn các file, và yêu cầu đặt ra là liệt kê những file nào có chứa từ hay cụm từ được cho trước. Làm thế nào viết chương trình để thực hiện yêu cầu này? Một cách dễ dàng nhất mà ai cũng có thể nghĩ ra là lần lượt duyệt qua tất cả các file và so khớp nội dung với từ khóa. Hướng giải quyết này là hoàn toàn chính xác, tuy nhiên nó chỉ phù hợp khi dung lượng các file là nhỏ, vì tốc độ xử lý của nó phụ thuộc vào độ lớn của các file. Đây là lý do có khái niệm indexing. Giải pháp để tìm kiếm một số lượng lớn văn bản nhanh chóng là đánh chỉ mục cho văn bản và chuyển nó thành định dạng cho phép việc tìm kiếm diễn ra rất mau lẹ, hạn chế sự chậm trễ trong việc duyệt file tuần tự. Quá trình chuyển đổi như trên được gọi là indexing, và kết quả mà nó trả lại được gọi là index.

Read more

Build Document

Sau khi đã lấy được nội dung từ dữ liệu thô, tiếp theo là xây dựng các đơn vị “document” sử dụng cho việc tìm kiếm. Mỗi document là một record bao gồm nhiều field (title, body, abstract, author, url). Document phải được thiết kế cẩn thận, như làm thế nào chia nội dung thành các record và các field, làm thế nào để tính toán giá trị cho từng field? Thông thường, cách phân chia khá rành mạch, như mỗi email, PDF file hay trang web là một document. Đôi khi tình hình trở nên rối hơn: làm thế nào xử lý attachment trong email? Cách giải quyết là xem phần văn bản trong attachment là một field của email, hay xem attachment là một document riêng và liên kết ngược lại với email?

Read more

Acquire Content

Đây là bước đầu tiên trong quá trình hoạt động của search engine. Ở bước này, một chương trình tự động (gọi là search bot, crawler hay spider) được sử dụng để download dữ liệu thô từ nguồn dữ liệu, rồi phân tích để lấy ra nội dung. Công việc này đơn giản nếu dữ liệu thô là các file theo định dạng XML, còn nguồn dữ liệu là các directory hoặc database có cấu trúc. Nó sẽ phức tạp hơn rất nhiều nếu dữ liệu thô là phi cấu trúc và nguồn dữ liệu bị phân tán khắp mọi nơi (Lotus Domino, Microsoft Exchange, Word document, Excel spreadsheet).

Read more

Search engine

image

Các quá trình hoạt động của một search engine

Search engine là một hệ thống truy vấn thông tin trên máy tính. Các thông tin này có thể tồn tại ở nhiều dạng, như hình ảnh, âm thanh, nhưng đa số là văn bản (email, tài liệu, ebook, trang web).

Text search engine sử dụng kỹ thuật full text search, cho phép người dùng nhập vào một vài từ khóa và tìm những văn bản nào có chứa những từ khóa này. Về cơ bản, những engine như vậy đều hoạt động dựa trên 3 quá trình:

- Crawling (Raw Content à Acquire Content à Build Document): Thu thập văn bản từ các dữ liệu dạng thô.

- Indexing (Analyze Document à Index Document): Tìm các từ khóa đặc trưng cho văn bản.

- Searching (User Interface à Build Query à Run Query à Render Results): So khớp từ khóa do người dùng nhập vào với từ khóa đặc trưng để chọn lọc văn bản phù hợp.

Read more