Với search_api_solr, làm cách nào tôi có thể áp dụng mức tăng dựa trên trường đáng kể khi sử dụng solr 6.x?


7

Tôi đang sử dụng Solr backend cho search_api trên một trang web drupal 8.

Tôi đã thêm giá trị của trường tham chiếu thuật ngữ phân loại ( field_promoted_search) vào chỉ mục.

Nếu một mục nội dung có field_promoted_searchgiá trị khớp với cụm từ tìm kiếm, tôi muốn nó có được mức tăng đáng kể (ví dụ ^ 1000), đẩy nó lên đầu kết quả tìm kiếm.

Thêm giá trị 'boost' cao admin/config/search/search-api/index/content/fieldshoạt động như mong đợi khi máy chủ đang sử dụng solr <6, nhưng kể từ khi chuyển sang 6.1.0, điều này không hoạt động như mong đợi. Điều này có thể là do search_api_solr / solarium đang sử dụng tăng cấp nhân chứ không phải phụ gia . Điều này có vẻ không hữu ích đối với tôi vì điều này nhân lên sự liên quan đạt được bởi các lĩnh vực khác, thay vì chỉ là đặc quyền field_promoted_search, mặc dù tôi không chắc chắn về khía cạnh này.

Tôi đã thử thêm truy vấn tăng cho trường tìm kiếm được quảng cáo này vào truy vấn solarium bằng cách sử dụng hook_search_api_solr_query_alter. Điều này yêu cầu tôi chuyển từng khóa tìm kiếm dưới dạng truy vấn được tăng cường và hiệu ứng dường như bị ảnh hưởng bởi thứ tự của các khóa (và kết quả của tôi không kết thúc ở trên cùng).

$keys = $query->getKeys();
unset($keys['#conjunction']);
// Boost results where search term matches promoted search field.
$boost_keys = [];
$boost_value = 1000;
foreach ($keys as $key) {
  $boost_keys[] = '"' . $key . '"^' . $boost_value;
}
$solarium_query->getEDisMax()->setBoostQuery('ss_promoted_search:' . implode(' OR ', $boost_keys));

Khi tôi cố gắng sử dụng chức năng tăng thay thế, tôi gặp lỗi từ Solr và truy vấn không chạy (tôi đã thử một số chức năng).

// Format is: "funcA(arg1,arg2)^1.2 funcB(arg3,arg4)^2.2"
$solarium_query->getEDisMax()->setBoostFunctions("ord(ss_promoted_search,1)^1000");

Lời khuyên nào cũng đánh giá cao.


Tài liệu tham khảo của tôi cho các phương pháp tăng phụ gia và nhân lên là bài viết rất hữu ích này .

Câu trả lời:


-2

Không có chức năng API nào được cung cấp bởi API tìm kiếm và API tìm kiếm Solr Drupal hoạt động đúng. Bạn có thể kiểm tra tài liệu solarium hoặc quay lại Solr 5 hoặc Solr 4. Tăng tốc hoạt động đúng với Solr 5.x. Kiểu dữ liệu được lập chỉ mục cũng quan trọng. Hãy thử lập chỉ mục nó như trường Fulltext.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.