Archive for the ‘ Học tập ’ Category

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

Get Microsoft Silverlight

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

ĐH == CH ?

Tiếp theo trò đố vui ĐH == ĐH lần trước, đây là level 2. Mọi người xem hình đính kèm và thử giải thích xem tại sao có kết quả này ???

botay2