Thực hiện tìm kiếm với Apachesolr, tôi muốn thêm một vài bộ lọc trong hook_apachesolr_prepare_query (& $ truy vấn). Điều này làm việc tốt, ngoại trừ tôi muốn các bộ lọc để mở rộng tìm kiếm ('OR'), thay vì thu hẹp nó ('AND').Cách sử dụng nhiều bộ lọc để mở rộng tìm kiếm trong các truy vấn Apachesolr
Ví dụ, nếu tôi có 4 nút loại: A và 3 loại: B khớp với tìm kiếm, để lọc theo loại: A và loại: B sẽ trả về 7 nút (loại: A VÀ nút loại : B), thay vì 0 loại: A cũng thuộc loại: B.
tôi thấy một gợi ý để thực hiện điều này bằng cách sử dụng mô hình nodeaccess
foreach ($filters as $filter) {
$subquery = apachesolr_drupal_query();
if (!empty($subquery)) {
$subquery->add_filter('type', $filter);
$query->add_subquery($subquery);
}
}
nhưng điều này dường như không làm việc. (Nó không trả lại bất kỳ kết quả nào).
sau đó tôi đã cố gắng (như tôi có một số lượng hạn chế của các loại nút) không bao gồm các loại mà tôi không muốn:
$excludes = array('A', 'B', 'C');
$excludes = array_diff($excludes, $filters);
$exclude = implode('&', $excludes);
$query->add_filter('type', $exclude, TRUE);
Phương pháp này của khâu chúng lại với nhau không hoạt động (các '&' được thoát) nhưng cũng không thêm chúng dưới dạng truy vấn phụ, tương tự như cách ở trên.
Bất kỳ đề xuất nào về cách thực hiện việc này?
Tôi cũng đang tìm kiếm – qasimzee
này Dường như bạn có câu trả lời ở đây: http://drupal.org/node/892280 phải không? Có lẽ bạn nên tự mình trả lời. – morja