4

大家好,

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

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

问候

4

4 回答 4

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);
于 2009-04-27T15:37:02.670 回答
0

在模式定义文件 conf/schema.xml 中,您可以指定默认运算符,确保它是 OR:

<solrQueryParser defaultOperator="OR"/>

然后,您可以在查询中用空格分隔单词,这将导致单词的 OR:

solrQuery.setQuery("myField:(id1 id2 id3)")
于 2011-04-14T10:37:08.470 回答
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 + " )");
于 2017-08-09T10:11:32.597 回答
0

我已经尝试过了,在Solr 5这个似乎效果很好:

String mQueryString="term:business OR term:\"information security\"";
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);
于 2016-03-28T09:54:49.103 回答