Solrj: как указать путь

Я пытаюсь использовать TermsComponent для реализации автозаполнения с помощью Solrj, но не понимаю, как чтобы указать путь (т. е. /terms часть http://localhost:8983/solr/terms).

Как указать путь с помощью Solrj?

Бонус: есть ли способ указать несколько полей для параметра terms.fl?

Спасибо


person George Armhold    schedule 22.02.2011    source источник


Ответы (3)


Вот так:

    SolrQuery query = new SolrQuery();
    query.setParam(CommonParams.QT, "/terms");
    query.setParam(TermsParams.TERMS, true);
    query.setParam(TermsParams.TERMS_LIMIT, "10");
    query.setParam(TermsParams.TERMS_FIELD, "title", "description");  // or whatever fields you want
    query.setParam(TermsParams.TERMS_PREFIX_STR, typedInput);

Это предполагает, что у вас есть TerminalComponent, подключенный к "/terms"; он есть в файле solrconfig.xml по умолчанию.

И в качестве бонуса: вы можете добавить несколько полей, просто добавив несколько строк для TERMS_FIELD (или несколько параметров URL &terms.fl=foo).

Спасибо, Маурисио, за то, что указал мне правильное направление.

person George Armhold    schedule 22.02.2011

Прямая поддержка TerminalComponent недоступна в SolrJ 1.4.1, но взгляните на соответствующий патч его довольно легко реализовать самостоятельно.

Поскольку TerminalsComponent — это стандартный компонент, вам не нужно использовать /terms, вы можете подключить его к стандартному запросу запроса. обработчик.

person Mauricio Scheffer    schedule 22.02.2011
comment
Привет, Маурисио. У меня есть TerminalComponent, который отлично работает на моем сервере solr. Я могу запросить его с помощью таких URL-адресов, как localhost:8983/solr/. Проблема в том, что я не знаю, как генерировать такие URL-адреса с помощью клиентских запросов solrj. В URL-адресах всегда есть solr/select, и я подозреваю, что мне нужно, чтобы они имели solr/terms. Я что-то упускаю? Спасибо за вашу помощь. - person George Armhold; 23.02.2011
comment
@Caffeine Coma: вам не нужны /solr/terms. Подключите ТерминсКомпонент к стандартному обработчику поиска. Смотрите вторую ссылку, которую я разместил в своем ответе. - person Mauricio Scheffer; 23.02.2011
comment
Терминыкомпонент уже был подключен в моем solrconfig.xml; Я просто не знал, как правильно указать это в solrj. Мне нужно было добавить /terms в качестве аргумента для параметра qt. Извините за столько глупых вопросов, но документация немного тонкая. Большое спасибо за вашу помощь, Маурисио. - person George Armhold; 23.02.2011

Я трачу так много времени на то, чтобы заставить TerminalsComponent работать.

В конце дня я понял, что существует другой набор команд, которые вам нужно вызвать, чтобы получить результаты из обработчика запросов «/terms».

Я пытался получить результаты, используя

HttpSolrServer server = new HttpSolrServ(solrUrl);
List<SolrDocument> list = server.query(query).getResults()

Тем не менее, правильный способ получить результаты от TerminalsComponent — это

HttpSolrServer server = new HttpSolrServ(solrUrl);
TermsResponse termResp = server.query(query).getTermsResponse();
List<Term> tList = termResp.getTerms("fieldNAME");

Я надеюсь, что это может помочь кому-то еще в будущем.

person Zouzias    schedule 16.04.2013