Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何写作”;或;使用Java中的Solr以编程方式进行查询_Java_Kotlin_Search_Solr_Solrj - Fatal编程技术网

“如何写作”;或;使用Java中的Solr以编程方式进行查询

“如何写作”;或;使用Java中的Solr以编程方式进行查询,java,kotlin,search,solr,solrj,Java,Kotlin,Search,Solr,Solrj,我对Java中的Solr有一个问题。我想以编程方式编写查询 我在8.3.1版中使用Solr、Lucene和SolrJ 这是我想如何做的一个例子 QueryBuilder queryBuilder = new QueryBuilder(new WhitespaceAnalyzer()); BooleanQuery booleanQuery = new BooleanQuery.Builder() .add(queryBuilder.createBooleanQuer

我对Java中的Solr有一个问题。我想以编程方式编写查询

我在8.3.1版中使用Solr、Lucene和SolrJ

这是我想如何做的一个例子

QueryBuilder queryBuilder = new QueryBuilder(new WhitespaceAnalyzer());
BooleanQuery booleanQuery = new BooleanQuery.Builder()
                .add(queryBuilder.createBooleanQuery("testField1", "foobar"), BooleanClause.Occur.SHOULD)
                .add(queryBuilder.createBooleanQuery("testField2", "barfoo"), BooleanClause.Occur.SHOULD)
                .add(queryBuilder.createMinShouldMatchQuery("minField", "foobar2", 0.5f), BooleanClause.Occur.SHOULD)
                .add(new TermRangeQuery("testField", new BytesRef("lower"), new BytesRef("upper"), true, true), BooleanClause.Occur.SHOULD)
                .add(queryBuilder.createBooleanQuery("empty", "fooBarEmpty"), BooleanClause.Occur.SHOULD)
                .build();
在Solr中有一些查询,如“…或…”。我想知道如何以编程方式编写这些“或”查询。我在谷歌上搜索了很多,但什么也没找到。也许你们中的一些人知道我想做什么,你们可以帮助我

干杯,
Jerry

您可以将自己的查询创建为字符串,然后添加到
solrj
filterquery

例如: 假设您必须搜索
city
abcxyz并请求如下内容:

{ "filterQuery": {"city":["abc","xyz"] } }
因此,您的查询如下:

SolrQuery query=new SolrQuery();
if(req.getFilterQuery()!=null&&!req.getFilterQuery().isEmpty()){
最终StringBuilder字符=新StringBuilder();
for(字符串键:req.getFilterQuery().keySet()){
附加字符(键+”:“+”(“”);
for(字符串val:req.getFilterQuery().get(键)){
chars.append(“\”“+val+”\”“+”);
}
字符。附加(“)”;
附加条款(“或”);
}
chars.delete(chars.length()-4,chars.length());
addFilterQuery(chars.toString());
}
QueryResponse response=solrClient.query(query,METHOD.POST);

希望这有助于您查找数据。

您能指定您的solr和solrj版本吗?我添加了我使用的版本。两者的版本相同。SolrJ和Solr。SolrJ中没有QueryBuilder。我认为您正在使用lucene solr库。请确认。哦,对不起。我的错。QueryBuilder来自lucene。也包括8.3.1版。有没有办法用这个querybuilder或其他方式创建这样的“或”查询?我唯一不想做的就是把它写成一个普通的字符串。