大家好,
我必须针对索引查询多个值(就像IN(id1,id2,id3)sql查询一样) 使用SolrJ,换句话说,我想检索哪些字段与一组值匹配的文档。
由于solrj api粗略记录,我希望有人可以帮助我
此致
答案 0 :(得分:6)
您可以执行以下操作:
SolrQuery solrQuery = new SolrQuery().setQuery("myField:id1 OR myField:id2 OR myField:id3");
QueryResponse rsp = server.query(solrQuery);
或:
SolrQuery solrQuery = new SolrQuery().setQuery("myField:(id1 OR id2 OR id3)");
QueryResponse rsp = server.query(solrQuery);
答案 1 :(得分:0)
在架构定义文件conf / schema.xml中,您可以指定默认运算符,确保它是OR:
<solrQueryParser defaultOperator="OR"/>
然后,您可以在查询中按空格分隔单词,这将导致单词的OR:
solrQuery.setQuery("myField:(id1 id2 id3)")
答案 2 :(得分:0)
我已经尝试过,在Solr 5
这个似乎运作良好:
String mQueryString="term:business OR term:\"information security\"";
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);
答案 3 :(得分:0)
美好的一天,
你可以通过双向
来做到这一点1-使用 OR 作为值之间的分隔符,我们可以使用StringUtils使其更容易检查下面
Set<String> pdfFamilies = new HashSet<String>();
String familyIdsString = StringUtils.join(pdfFamilies , 'OR');
solrQuery = new SolrQuery("FAM_ID: ( " + familyIdsString + " )");
2 - 使用空格作为值之间的分隔符,请参阅下面的
Set<String> pdfFamilies = new HashSet<String>();
String familyIdsString = StringUtils.join(pdfFamilies , ' ');
solrQuery = new SolrQuery("FAM_ID: ( " + familyIdsString + " )");