SolrJ查询
问题描述:
喂大家,SolrJ查询
我必须对索引(就像IN(ID1,ID2,ID3)的SQL查询)查询多个值 使用SolrJ,换句话说,我要检索文档的字段与一组值相匹配。
由于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)")
答
我已经尝试过了,在Solr 5
这一个似乎工作好:
String mQueryString="term:business OR term:\"information security\"";
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);
答
美好的一天,
你可以做到这一点的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 + ")");
riggt ,这是我的错,我没有很好地解释这个问题。 我想这样做是实现相同的功能,避免或者是什么 - 或者..或者(?Solr的查询不实现它) THX – Lici 2009-04-27 15:41:42
看到我的编辑答案,我只是增加了另一种解决办法 – 2009-04-27 16:43:21