2010-08-03 24 views
6

Tôi có Solr cấu hình để trở lại mảnh với một fragsize của 500.Display lược trước và sau đoạn trong Solr

Đôi khi, toàn bộ lĩnh vực là 500 ký tự hoặc ít hơn, do đó đoạn là giống hệt nhau để lĩnh vực này. Đối với các trường dài hơn thời gian đó, SOLR chỉ trả về mảnh mà không có bất kỳ dấu hiệu nào (hoặc có vẻ như vậy) rằng đoạn chỉ đại diện cho một phần nội dung của một trường. Điều đó có nghĩa là đoạn có thể bắt đầu giữa câu.

Tôi muốn nói rõ với người dùng rằng họ đang xem một đoạn và chỉ hiển thị dấu chấm lửng ở cuối và/hoặc bắt đầu một đoạn như vậy. Chức năng đó có được tích hợp vào SOLR không? Nếu không, làm thế nào bạn sẽ đi về chèn dấu chấm lửng?

Trả lời

1

Điều tôi đã làm cuối cùng là trả về cả đoạn và trường không bị thay đổi mà từ đó đoạn được tạo ra.

Sau đó tôi đã viết một số logic so sánh hai để xác định liệu dấu ba chấm có nên được thêm vào đoạn hay không và liệu có thêm nó trước, sau hoặc cả trước và sau đoạn.

+0

Đó là những gì tôi đã làm, quá :) +1 –

+0

Tôi cũng vậy :) Tạo một nhiệm vụ cải tiến: https://issues.apache.org/jira/browse/SOLR-9271 – cuh

0

Solr sẽ không trả lại chỉ báo, bạn nói đúng.

Đặt fragsize thành 501. Sau đó, một chút logic trong giao diện người dùng của bạn để xác định liệu dấu ba chấm có nên được hiển thị hay không.

Cắt bất kỳ thứ gì từ 501 đến 500 và thêm dấu ba chấm.

+0

Vâng, tôi chỉ hy vọng rằng có một cách tích hợp để làm điều đó. Ngoài ra, điều đó vẫn để lại cho tôi vấn đề không biết có nên hiển thị dấu chấm lửng ở đầu hoặc cuối đoạn (hoặc cả hai). – Stefan

-1

Đây là một cách tiếp cận tốt hơn. Trong khi tạo chỉ mục, hãy thêm thuộc tính "trêu ghẹo" có logic này đã được áp dụng. Đẩy nỗ lực đó ra khỏi các yêu cầu của bạn hoàn toàn. Đó chính xác là cách tôi sẽ làm điều này.

+1

Tại thời điểm chỉ mục bạn không biết phần nào của trường khớp với và do đó, phân đoạn sẽ như thế nào. – Stefan

0

Tôi vừa xử lý cùng một vấn đề. Con đường tôi đi khắp nơi làm này là như sau:

  1. Lấy chuỗi gốc
  2. Nhận cả người đầu tiên và cuối cùng 10 ký tự của chuỗi gốc
  3. Nhận cả 10 ký tự đầu tiên và cuối cùng của đoạn được tìm kiếm bởi Solr
  4. So sánh cả hai và điền vào một biến khi cần!

    $f_ellip = NULL; 
    $l_ellip = NULL; 
    if ($orig_body_beggining != substr((string)$hl_content->str, 0, 10)) { 
        $f_ellip = "… "; 
    } 
    if ($orig_body_end != substr((string)$hl_content->str, 0, -10)) { 
        $l_ellip = " …"; 
    } 
    $entry_body = $f_ellip.(string)$hl_content->str.$l_ellip; 
    
Các vấn đề liên quan