Я строю запрос apacheolr в своем модуле Drupal программным образом и имел успех с некоторыми аспектами, но я все еще борюсь с другими.Apacheolr query - фильтр по тексту в полях
До сих пор я был в состоянии построить запрос, который может осуществлять поиск определенного текста и ограничить результаты, основанные на условиях, фильтруется с помощью следующего кода:
$subquery_region->addFilter('tid', $term->tid);
$query->addFilterSubQuery($subquery_region, 'OR', 'AND');
То, что я хотел бы достичь следующего - это возможность сузить поиск дальше, добавив фильтр для поиска определенного текста в определенном поле в узле. Кто-нибудь мог это сделать.
Я исследовал в Интернете, и перепробовали множество различных способов, таких как добавление фильтра непосредственно к основному поисковому запросу
$query->addParam('fl', 'ss_my_field');
$query->addFilter("ss_my_field", "field_substring_to_search_for");
Как и нарушения, что из в подзапрос, чтобы добавить в основной поиск запрос
$subquery_test = apachesolr_drupal_query("Test");
$subquery_test->addParam('fl', 'ss_my_field');
$subquery_test->addFilter("ss_my_field", "field_substring_to_search_for");
$query->addFilterSubQuery($subquery_test, 'OR', 'AND');
Но никто из них не работает. Они возвращают пустой набор, хотя я знаю, что подстрока существует в поле, которое я добавляю в качестве фильтра, и оно было проиндексировано. Я проверил через модуль views apacheorl, что индекс поиска был заполнен этим полем и может видеть, что подстрока существует.
Есть ли что-то не так с моим синтаксисом или тем, как я строю запрос?
Если вы знаете, как добавлять фильтры для поиска текста в определенных полях, пожалуйста, поделитесь! Это может быть даже не сделано с помощью функции addFilter, но это все, что я пытался до сих пор. Спасибо!
Рам, большое вам спасибо за помощь. Первая часть работала красиво, и теперь я вижу, что мои поля добавляются в индекс. Однако добавление их с помощью функции addFilter(), как описано, ничего не возвращает. Любые другие идеи по формату. Я редактирую свой вопрос, чтобы включить все, что я пробовал до сих пор, что не сработало ... –