2010-01-14 23 views
7

Tôi đang xem xét/làm việc để triển khai công cụ tìm kiếm cho các loại nội dung khác nhau của công ty chúng tôi và tôi đang cố gắng quấn đầu quanh Lucene (cụ thể là hương vị .net).Các tài liệu trong Lucene có chứa cùng các trường không?

Hiện tại, câu hỏi chính của tôi là liệu các tài liệu có phải chứa cùng một trường hay không.

Ví dụ:

Document1:

  • Title: "Tôi là một tài liệu, em bé"
  • Body: "Đây là một số điều quan trọng"
  • Latitude: 26,12224
  • Longtitude: -65.23124
  • Thương hiệu: Toshiba

Document2:

  • Tiêu đề: "Một tài liệu bởi Me"
  • Body: "Lorem ipsum và tất cả những gì jazz"
  • Thể loại: Các sản phẩm
  • Tác giả: Sir Loin

... v.v.

Trả lời

14

Không có gì trong lực lượng lucene thống nhất.

Nếu bạn tìm kiếm trên trường có tên 'fred' và không phải tất cả tài liệu đều có 'fred', tìm kiếm đó sẽ không tìm thấy tài liệu không có fredless.

+3

Bạn là người hùng mới của tôi. – Matt

0

Nếu bạn muốn lập chỉ mục trên một trường cụ thể, tôi g uess tất cả các tài liệu phải có cùng một lĩnh vực.

+0

Đó là những gì trực giác của tôi đã nói là như vậy, nhưng tôi đã không thể tìm thấy bất cứ điều gì cụ thể nói theo cách này hay cách khác. – Matt

0

Tất cả phụ thuộc vào cách bạn đã lập chỉ mục tài liệu của mình trong Lucene. Tất cả Document s phải được thêm vào Chỉ mục. Bạn có thể sử dụng IndexWriter hoặc viết lớp của riêng bạn để làm điều đó. Trước khi thêm một tài liệu vào Index, bạn nên chia nó thành các cặp giá trị tên. Sau đó bạn có thể truy vấn Lucene cho các giá trị tên này bằng cách sử dụng QueryParser. Ví dụ, truy vấn sau đây sẽ trả về tất cả các tài liệu với các cụm từ "Tôi là một tài liệu, em bé" trong tiêu đề và "Dưới đây là một số điều quan trọng" trong cơ thể.

title:("I'm a document, baby") body:("Here are some important things") 

Tôi vừa trình bày một ví dụ đơn giản nhưng bạn có thể tạo truy vấn tìm kiếm mạnh mẽ hơn theo nhiều cách khác nhau.

Các lớp mà tôi đã đề cập đến từ java nhưng .net phải giống nhau.

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