2012-02-06 37 views
6

Tôi đang cố gắng bắt đầu với Apache Solr, nhưng một số điều không rõ ràng với tôi. Đọc qua tutorial, tôi đã thiết lập một cá thể Solr đang chạy. Những gì tôi thấy khó hiểu là tất cả các cấu hình của Solr (lược đồ và vv) có định dạng XML. Khi họ thêm dữ liệu mẫu, nó cho thấy cách thêm tài liệu xml (java -jar post.jar solr.xml monitor.xml). Nó chỉ là một lựa chọn xấu của định dạng mẫu? Ý tôi là, họ đang tải lên dữ liệu mô tả tài liệu hay các tài liệu thực tế họ đang thêm là tệp .xml?Bắt đầu với Solr

Tôi đang cố gắng thêm một số sách ở định dạng .txt, vì vậy nếu tôi sử dụng java -jar post.jar mydoc.txt, tôi có thêm nó không? Làm cách nào để thêm tài liệu này siêu dữ liệu (tác giả, tiêu đề) về nó?

Điều đó nói rằng, tôi đã cố gắng để thiết lập một trang Html đơn giản để đăng tài liệu lên Solr:

<html> 
    <head></head> 
<body> 
    <form action="http://localhost:8983/solr/update?commit=true" enctype="multipart/form-data" method="post"> 
    <input type="file"> 
    <input type="submit" value="Send"> 
    </form> 
</body> 
</html> 

Khi tôi cố gắng gửi một tập tin, tôi nhận được câu trả lời này:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">26</int> 
    </lst> 
</response> 

Is Điều này đúng? Có nghĩa là tôi đã thêm thành công tệp của mình không? Nếu vậy, một trong những từ trong tập tin, ví dụ là "montagna" (đây là một cuốn sách ý, montagna có nghĩa là núi ...). Nếu tôi truy cập vào url

http://localhost:8983/solr/select/?q=montagna&start=0&rows=10&indent=on 

tôi mong đợi một cái gì đó để được trả lại (toàn bộ văn bản có thể, hoặc một số thông tin về các tập tin), nhưng đây là những gì tôi nhận được:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
     <int name="QTime">1</int> 
     <lst name="params"> 
     <str name="indent">on</str> 
     <str name="start">0</str> 
     <str name="q">montagna</str> 
     <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

Không có vẻ giống như một trận đấu với tôi. Ngoài ra, theo số to this answer, tôi có thể lấy lại văn bản xung quanh các kết quả phù hợp với hl.fragsize. Làm cách nào để tích hợp điều này trong chuỗi tìm kiếm? Cảm ơn bạn

Trả lời

5

Ví dụ về cách thêm tài liệu vào chỉ mục thông qua tin nhắn xml. Có một cái nhìn here. *.xml bạn đã đề cập là vì có một số tin nhắn xml được lưu trữ trên các hệ thống tệp. Các thông điệp xml như sau:

<add> 
    <doc> 
    <field name="id">UTF8TEST</field> 
    <field name="name">Test with some UTF-8 encoded characters</field> 
    <field name="manu">Apache Software Foundation</field> 
    <field name="cat">software</field> 
    <field name="cat">search</field> 
    <field name="features">No accents here</field> 
    <field name="price">0</field> 
    <!-- no popularity, get the default from schema.xml --> 
    <field name="inStock">true</field> 
    </doc> 
</add> 

Đó chỉ là cách để thể hiện bất kỳ loại tài liệu nào để lập chỉ mục. Mỗi tài liệu chứa một hoặc nhiều trường, v.v. Có nhiều cách khác nhau để thêm tài liệu vào Solr, ví dụ nó chấp nhận cũng CSV format, nhưng phổ biến nhất là ngày nay là định dạng xml.

Tôi nghĩ bạn không thực sự lập chỉ mục bất kỳ thứ gì. Bạn có thể kiểm tra kết quả của truy vấn này: http://localhost:8983/solr/select/?q=*:* truy xuất tất cả các tài liệu bạn có trong chỉ mục của mình. Một lỗi phổ biến cũng là quên cam kết, nhưng tôi thấy bạn đã thêm thông số commit=true vào url của bạn, do đó, đó không phải là trường hợp của bạn.

Nếu bạn muốn đánh chỉ mục chỉ là nội dung của một tập tin văn bản, bạn có thể ví dụ như định nghĩa giản đồ của bạn với hai lĩnh vực:

  • filename
  • nội dung

và sử dụng thông điệp này đến lập chỉ mục tài liệu của bạn:

<add> 
    <doc> 
    <field name="filename">test.txt</field> 
    <field name="content">Test with some UTF-8 encoded characters</field> 
    </doc> 
</add> 
1

Hiểu thuật ngữ:

Document in solr -> Row in RDBMS 
Field of document -> Column of a cell 

Và tất nhiên, một lõi Solr, cả cơ sở dữ liệu và bảng khổng lồ, chiếm một cách thưa thớt.

Để sử dụng (cụ thể) của bạn, bạn sẽ tạo tài liệu cho từng tệp; bao gồm ID, nội dung tệp, v.v.


XML là một cách để tạo hoạt động solr. http://wiki.apache.org/solr/UpdateXmlMessages

Nó có các hoạt động thêm, xóa, cam kết và tối ưu hóa. Thao tác thêm bao gồm một hoặc nhiều tài liệu.

<add> 
    <doc> 
    <field name="employeeId">05991</field> 
    <field name="office">Bridgewater</field> 
    <field name="skills">Perl</field> 
    <field name="skills">Java</field> 
    </doc> 
    [<doc> ... </doc>[<doc> ... </doc>]] 
</add> 

Ngoài ra còn có CSV (thêm chức năng chỉ), JSON (đầy đủ chức năng), DIH (cơ sở dữ liệu nhập khẩu dự kiến).

Ngoài ra còn có extracting request handler, có thể trích xuất nội dung (và siêu dữ liệu) từ tất cả các loại tài liệu phong phú (DOC, DOCX, PDF). Bổ sung: có literal để đặt trường của riêng bạn.


Trình xử lý yêu cầu trích xuất lưu trữ kết quả vào trường text. Trình phân tích cú pháp truy vấn q= và công cụ đánh dấu cao giả định trường mặc định (có, nó phù hợp với những gì bạn đã làm) của text. Bạn có thể chỉ định các trường cho chúng; cũng là trường solr trả về cho bạn trong kết quả.