Tôi đang sử dụng Lucene để lập chỉ mục và tìm kiếm một số lượng nhỏ tài liệu lớn. Sử dụng bản demo từ trang Lucene Tôi đã lập chỉ mục các tài liệu và có thể tìm kiếm chúng. Tuy nhiên, kết quả tìm kiếm không đặc biệt hữu ích vì nó trỏ đến tệp của tài liệu. Với các tài liệu rất lớn, điều này không thực sự hữu ích.Lucene có thể trả lại một số kết quả tìm kiếm từ một tệp được lập chỉ mục duy nhất không?
Tôi tự hỏi liệu Lucene có thể lập chỉ mục các tài liệu rất lớn này và tạo ra một sự trừu tượng hóa trên chúng cung cấp nhiều kết quả chi tiết hơn.
Ví dụ có thể giải thích rõ hơn ý của tôi là gì. Xem xét một cuốn sách rất lớn, chẳng hạn như Kinh Thánh. Một tập tin chứa toàn bộ văn bản của Kinh Thánh, vì vậy với bản demo, kết quả của việc tìm kiếm câu nói, 'Damascus' sẽ trỏ đến tập tin. Những gì tôi muốn làm là giữ lại tài liệu lớn, nhưng tìm kiếm sẽ trả về kết quả trỏ đến một cuốn sách, chương hoặc thậm chí chính xác như một câu. Vì vậy, một tìm kiếm cho 'Damascus' có thể trở lại (trong số những người khác) Book 23, Chương 7, Verse 8.
Có thể (và thực hành tốt nhất trong sử dụng Lucene) hay thay vào đó tôi cố gắng chia nhỏ tài liệu lớn nhiều tệp nhỏ để lập chỉ mục?
Nếu có bất kỳ sự khác biệt nào, tôi đang sử dụng Java Lucene 2.9.0 và đang lập chỉ mục các tệp HTML có dung lượng khoảng 1MB - 4MB. Trong đó về kích thước tập tin là không lớn, nhưng nó là lớn, liên quan đến một người đọc nó.
Tôi không nghĩ tôi đã giải thích điều này hết mức có thể. Ở đây đi cho một ví dụ khác.
Giả sử tôi lấy tệp HTML lớn của mình và (vì lợi ích đối số) cụm từ tìm kiếm 'Damascus' xuất hiện 3 lần. Một lần trên dòng 100 trong một thẻ <div>
, trên dòng 2000 trong một thẻ <p>
và trên dòng 5000 trong một thẻ <h1>
. Có thể lập chỉ mục với Lucene, sao cho sẽ có 3 kết quả, và họ có thể trỏ đến yếu tố cụ thể mà thuật ngữ đó ở trong đó không?
Tôi không nghĩ rằng mình muốn cung cấp kết quả tài liệu khác cho cụm từ đó. Vì vậy, nếu thuật ngữ 'Damascus' xuất hiện hai lần trong một số <div>
cụ thể, thì sẽ chỉ có một kết quả phù hợp.
Nó xuất hiện từ nhận xét từ Kragen rằng những gì tôi muốn làm là phân tích cú pháp HTML khi Lucene đang trải qua giai đoạn lập chỉ mục. Sau đó, tôi có thể quyết định đoạn tôi muốn xem xét như một tài liệu từ những gì được đọc bởi trình phân tích cú pháp. Vì vậy, nếu tôi thấy một div với một lớp nhất định tôi có thể bắt đầu một tài liệu Lucene mới và nó sẽ được trả về như là một hit riêng biệt khi một từ trong nội dung div được tìm kiếm.
Điều này có vẻ giống như những gì tôi muốn làm không?
Sử dụng ví dụ của bạn, tôi có thể giữ sách B là một tệp đơn, trong trường hợp của tôi là tệp HTML và tạo một vài Tài liệu Lucene từ bên trong một tệp đó sao cho tất cả kết quả từ một tệp có thể được báo cáo cho người dùng lượt truy cập? Có thể lập chỉ mục theo chương khi các chương nằm trong cùng một tệp * không? Cảm ơn câu trả lời của bạn :) – Grundlefleck
Bạn có thể lập chỉ mục theo chương bằng cách chỉ cho Lucene một tập con của tệp đó khi bạn lập chỉ mục - điều này sẽ cho bạn 1 lần truy cập cho mỗi chương phù hợp. Nếu bạn muốn trình bày cho người dùng một lần truy cập cho mỗi trận đấu rời rạc thì bạn sẽ phải trải qua và tìm tất cả các lần xuất hiện cho mỗi tài liệu phù hợp - không có cách nào để chia sách thành đủ tài liệu Lucene sao cho mỗi lần truy cập được đảm bảo tương ứng với chính xác 1 lần xuất hiện của từ/cụm từ đó. – Justin