2009-04-27 22 views
5

Hallo mọi người,SolrJ Query

tôi phải truy vấn nhiều giá trị đối với một chỉ số (giống như một IN (id1, id2, id3) truy vấn sql) sử dụng SolrJ, nói cách khác tôi muốn để lấy tài liệu mà lĩnh vực khớp với một tập hợp các giá trị.

Như solrj api là thô ghi nhận tôi hy vọng ai đó có thể giúp tôi

Trân

Trả lời

6

Bạn có thể làm một cái gì đó như:

SolrQuery solrQuery = new SolrQuery().setQuery("myField:id1 OR myField:id2 OR myField:id3"); 
QueryResponse rsp = server.query(solrQuery); 

hay:

SolrQuery solrQuery = new SolrQuery().setQuery("myField:(id1 OR id2 OR id3)"); 
QueryResponse rsp = server.query(solrQuery); 
+0

riggt , đó là lỗi của tôi, tôi đã không giải thích tốt câu hỏi. Tôi muốn làm gì để thực hiện cùng một chức năng tránh HOẶC - HOẶC .. HOẶC (truy vấn solr không triển khai nó?) thx – Lici

+0

xem câu trả lời đã chỉnh sửa của mình, tôi vừa thêm giải pháp –

+0

Tôi sẽ thử . Hy vọng nó hoạt động với một truy vấn lọc ... – Lici

0

Trong giản đồ định nghĩa tập tin conf/schema.xml bạn có thể chỉ định toán tử mặc định, đảm bảo nó là OR:

<solrQueryParser defaultOperator="OR"/> 

Sau đó, bạn có thể tách lời bằng dấu cách trong truy vấn của bạn và điều này sẽ dẫn đến một OR của dòng chữ:

solrQuery.setQuery("myField:(id1 id2 id3)") 
+3

Lưu ý rằng không nên dựa vào cài đặt này vì nó bị coi là không dùng nữa: http://wiki.apache.org/solr/SchemaXml#line-118 – oksayt

0

Tôi đã thử nó và trong Solr 5 này dường như làm việc tốt:

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

Good Day,

Bạn có thể làm điều đó bằng 2 cách

1- Sử dụng HOẶC như tách giữa các giá trị chúng ta có thể sử dụng StringUtils để làm cho nó dễ dàng hơn kiểm tra dưới đây

Set<String> pdfFamilies = new HashSet<String>(); 
String familyIdsString = StringUtils.join(pdfFamilies , 'OR'); 
solrQuery = new SolrQuery("FAM_ID: (" + familyIdsString + ")"); 

2-Sử dụng SPACE như tách giữa các giá trị kiểm tra dưới đây

Set<String> pdfFamilies = new HashSet<String>(); 
String familyIdsString = StringUtils.join(pdfFamilies , ' '); 
solrQuery = new SolrQuery("FAM_ID: (" + familyIdsString + ")");