SolrJ查询

时间:2009-04-27 14:02:20

标签: solr

大家好,

我必须针对索引查询多个值(就像IN(id1,id2,id3)sql查询一样) 使用SolrJ,换句话说,我想检索哪些字段与一组值匹配的文档。

由于solrj api粗略记录,我希望有人可以帮助我

此致

4 个答案:

答案 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 + " )");