Как я могу фильтровать результаты по настраиваемому полю в запросе Solr? - PullRequest
0 голосов
/ 27 мая 2020

Мне нужен настраиваемый фильтр полей для моих данных Solr, например

   {
    "id":"1",
    "name":"Test title",
    "language":"en"
    },
  {
    "id":"2",
    "name":"Test title",
    "language":"fr"
    "parent": "1"
    }

Мне нужно получить только первый элемент по запросу

/select?q=name:test

Поэтому мне нужно отфильтровать результаты по родительскому полю таким образом, чтобы в результате был один из элементов. Спасибо за любые идеи.

1 Ответ

1 голос
/ 02 июня 2020

Когда мне нужно выполнять запросы в Solr, я использовал SearchQuery () и внутри них устанавливал filterQueries. Для моего поиска можно было установить фильтры.

final String FIELD_NAME = "name_text_mv"; // name of my field in Solr
SearchQuery searchQuery = init(facetSearchConfig); // init configs
searchQuery.setFreeTextQueryBuilder(text); // set the text of my search
setFiltersFreeTextSearch(searchQuery.getFilterQueries(), text, FIELD_NAME);

Функция создания магов c (добавить в мой поиск мои фильтры):

private void setFiltersFreeTextSearch(List<QueryField> filters, String text, String... fields) {
    text = StringUtils.stripAccents(text).toLowerCase();
    String textCapitalized = capitalizeEachWolrd(text.toLowerCase());
    for (String field : fields) {
        QueryField queryField = new QueryField(field, SearchQuery.Operator.OR, SearchQuery.QueryOperator.CONTAINS,
                text, text.toUpperCase(), textCapitalized);
        filters.add(queryField);
    }
}

Как вы можете видеть, в этом QueryField вы можете добавить «где» вы ищете в Solr. Я использовал CONTAINS, и это мои «LIKE» и «OR» для поиска любого элемента. это было моим решением для моего случая, в любом случае, это просто идея. :)

(Для проекта используется Java)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...