2015-01-07 8 views
0

나는 solr 서버를 사용하고 solrj를 사용하여 쿼리합니다. 특정 문서에서만 결과를 검색하려고하는데,보고 싶은 문서의 ID가 있습니다. 지정된 문서 목록의 결과 만 반환하도록 쿼리를 구성하려면 어떻게해야합니까?solrj를 사용하여 특정 문서 내에서만 결과 찾기

List<String> documentList = ...; // collection of Strings of the 
            // ID's of the documents I want 
            // to look for 
    this.query = new SolrQuery(); 
    this.query.setFields("id", "score"); 
    this.query.addSort("score", SolrQuery.ORDER.desc); 
    this.query.addSort("id", SolrQuery.ORDER.desc); 
    this.query.setQuery(searchString); 

나는 그것을 만들기 위해 무엇을해야합니까 때문에 쿼리에 의해 반환 된 모든 문서는 id가 허용 된 문서의 목록에 문서가 있는지?

답변

1

나는 solrj을 많이 사용하지 않았지만 필터 목록을 추가하는 것만 큼 쉽습니다 (예 : 점수에 영향을 미치지 않아도되는지 여부를 묻지 않습니다). 예 :

String filterQuery = "id:(1 OR 2 OR 3)"; 
this.query.addFilterQuery(filterQuery); 

그래서 당신은 OR에 의해 구분 된 문자열로 documentList을 변환 할 수 있습니다 (그리고 예, 나는 그것이 대문자해야합니까 믿는다).

수용 할 수있는 문서의 수가 너무 많은 경우 Solr 구성을 변경하여 쿼리에서 더 많은 수의 불리언 용어를 허용해야합니다 (기본값은 512 또는 1024 일 것으로 생각되지만 문제없이 32768을 사용했습니다.)

관련 문제