大家好,
我必须使用 SolrJ 针对索引查询多个值(就像 IN (id1, id2, id3) sql 查询),换句话说,我想检索与一组值匹配的字段的文档。
由于 solrj api 的记录很粗糙,我希望有人可以帮助我
问候
大家好,
我必须使用 SolrJ 针对索引查询多个值(就像 IN (id1, id2, id3) sql 查询),换句话说,我想检索与一组值匹配的字段的文档。
由于 solrj api 的记录很粗糙,我希望有人可以帮助我
问候
您可以执行以下操作:
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);
在模式定义文件 conf/schema.xml 中,您可以指定默认运算符,确保它是 OR:
<solrQueryParser defaultOperator="OR"/>
然后,您可以在查询中用空格分隔单词,这将导致单词的 OR:
solrQuery.setQuery("myField:(id1 id2 id3)")
再会 ,
你可以通过两种方式做到这一点
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 + " )");
我已经尝试过了,在Solr 5
这个似乎效果很好:
String mQueryString="term:business OR term:\"information security\"";
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);