2009-04-27 58 views
5

喂大家,SolrJ查询

我必须对索引(就像IN(ID1,ID2,ID3)的SQL查询)查询多个值 使用SolrJ,换句话说,我要检索文档的字段与一组值相匹配。

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

问候

回答

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); 
+0

riggt ,这是我的错,我没有很好地解释这个问题。 我想这样做是实现相同的功能,避免或者是什么 - 或者..或者(?Solr的查询不实现它) THX – Lici 2009-04-27 15:41:42

+0

看到我的编辑答案,我只是增加了另一种解决办法 – 2009-04-27 16:43:21

0

在架构定义文件conf/schema.xml中,你可以指定默认的操作符,确保它是一个OR:

<solrQueryParser defaultOperator="OR"/> 

然后你就可以在查询中分离出来的空间的话,这将导致该单词的OR:

solrQuery.setQuery("myField:(id1 id2 id3)") 
0

我已经尝试过了,在Solr 5这一个似乎工作好:

String mQueryString="term:business OR term:\"information security\""; 
SolrQuery query = new SolrQuery(); 
query.setQuery(mQueryString); 
0

美好的一天,

你可以做到这一点的2路

1-使用的值,我们可以使用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 + ")");