2009-04-27 69 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 + ")");