2011-10-26 41 views
5

Tôi đang làm việc với lớp SearchFiles trong thư mục contrib/demo của Lucene. Thay vì tìm kiếm kết quả ở dạng được phân trang, tôi muốn truy xuất tất cả tài liệu khớp với truy vấn. Có cách nào để làm điều này với API hiện tại (3.4)? Dường như tất cả các chức năng tìm kiếm đều yêu cầu một số nguyên cho biết số lần truy cập quay trở lại.Truy vấn tất cả kết quả trong Lucene IndexSearcher

Mã bản demo trông giống như

TopDocs results = searcher.search(query, 5 * hitsPerPage); 
ScoreDoc[] its = results.scoreDocs; 

Mà sẽ chỉ trả lại một số cố định của các kết quả

Trả lời

3

Viết riêng Collector của bạn và sử dụng nó như searcher.Search(query, new MyCollector());

http://lucene.apache.org/java/3_4_0/api/core/org/apache/lucene/search/Collector.html

+2

liên kết ở trên là DEAD đây là lý do tại sao * liên kết chỉ trả lời suck! * –

+0

@JarrodRoberson Như thế này http://stackoverflow.com/a/1919289/932418 :) Nó biến mất sau khi di chuyển github. –

+1

một liên kết đến một dự án đã được sửa đổi btw, khác với liên kết đến thông tin/tài liệu có thể được đăng ở đây đầy đủ. –

6

Nếu sử dụng Lucene Reader, tức là IndexReader, bạn có thể tự giúp mình bằng cách viết

TopDocs results = searcher.search(query, reader.numDocs()); 

Điều này sẽ đảm bảo không có kết quả nào bị bỏ qua trong tìm kiếm.

Các vấn đề liên quan