繁体   English   中英

如何在 Solr 查询中按自定义字段过滤结果?

[英]How can I filter results by custom field in Solr query?

我的 Solr 数据需要一些自定义字段过滤器,例如

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

我只需要通过查询获取第一项

/select?q=name:test

所以我需要以这样的方式按父字段过滤结果,其中一项将出现在结果中。 感谢您的任何想法。

当我需要在 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);

function 创造魔法(在我的搜索中添加我的过滤器):

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 中搜索的“wheres”。 我使用的是 CONTAINS,这是我的“LIKE”和“OR”来查找任何项目。

因此,基本上您可以使用 QueryField() 为您的特定字段添加过滤器。

好吧,这是我的解决方案,无论如何,这只是一个想法。 :)

(对于项目使用Java)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM