2016-10-26 8 views
0

Я с помощью SOLRJ найти термин частоты для каждого члена в поле, я написал этот код, но он не работает:частота Term в solrj

public static SolrRequest req; 
public static void main(String[] args) throws SolrServerException, 
IOException { 
String urlString = "http://localhost:8983/solr/huda"; 
SolrClient solr = new HttpSolrClient.Builder(urlString).build(); 

SolrQuery query = new SolrQuery(); 
query.setQuery("*:*"); 
SolrRequest<QueryResponse> req = new QueryRequest(query); 
QueryResponse rsp = req.process(solr); 

System.out.println("numFound: " + rsp.getResults().getNumFound()); 

TermsResponse termResp =rsp.getTermsResponse(); 
List<Term> terms = termResp.getTerms("name"); 
System.out.print(terms.size()); 
     } 

Я получил это:

Exception in thread "main" java.lang.NullPointerException at solr_test.solr.App2.main(App2.java:50) 

Спасибо !

ответ

0

Вы должны немного изменить свой код, чтобы получить статистику terms в ответе вашего запроса solr.

Попробуйте что-то вроде этого:

SolrQuery query = new SolrQuery(); 
    query.setTerms(true); 
    query.addTermsField("name"); 
    SolrRequest<QueryResponse> req = new QueryRequest(query); 
    QueryResponse rsp = req.process(solr); 

    TermsResponse termResp = rsp.getTermsResponse(); 
    List<TermsResponse.Term> terms = termResp.getTerms("name"); 

ПРИМЕЧАНИЕ что метод setQuery не используется в предоставленном коде. Внутри, из-за этого, запрос solr будет направлен на обработчик , а не на Запрос.

Solr Terms Component

+0

Что вы подразумеваете? ?? Я попытался это, но он не работает: 'SolrQuery запрос = новый SolrQuery();' ' query.setQuery ("*: *");' ' query.setTerms (истина),' ' запрос .addTermsField ("название"); '' query.addTermsField ("ID"); '' SolrRequest REQ = новый QueryRequest (запрос); '' QueryResponse RSP = req.process (Solr); ' 'TermsResponse termResp = rsp.getTermsResponse();' ' Список термины = termResp.getTerms ("имя");' ' System.out.print (terms.size());' – huda

+0

извините, я должен был добавить весь фрагмент кода и не только первые несколько строк. Я сделал это тем временем. Вам не нужно вызывать метод 'setQuery (String)' в примере из комментария, чтобы получить условия. –

+0

Я попробовал это, но я получил: \t \t 'numFound: 0' \t и я получил эту ошибку: \t \t ' Исключение в потоке "основного" java.lang.NullPointerException в solr_test.solr.App3.main (App3.java:44) ' – huda

 Смежные вопросы

  • Нет связанных вопросов^_^