![](/img/trans.png)
[英]Solr: How can I improve the performance of a filter query (for a specific value, not a range query) on a numeric field?
[英]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.