喂大家,SolrJ查詢
我必須對索引(就像IN(ID1,ID2,ID3)的SQL查詢)查詢多個值 使用SolrJ,換句話說,我要檢索文檔的字段與一組值相匹配。
由於solrj api是粗糙的記錄我希望有人可以幫助我
問候
喂大家,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