Как создать пользовательский поисковый компонент в solr - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь создать пользовательский компонент поиска для solr для обработки специального запроса.Я хочу найти и проверить, является ли номер результата пустым или нет.Если он пуст, я попытаюсь обновить условие поиска и попытаться выполнить поиск снова.

Мне нужно сделать это, потому что в настоящее время мне приходится запрашивать несколько раз, проверять номер результата и снова запрашивать, если результат пуст.И для получения окончательного результата требуется много запросов.

Поэтому я хочу сделать это на сервере Solr, а затем на клиенте просто отправить 1 запрос и получить окончательный результат.

Я следуюэто учебник .Затем я проверяю журнал Solr, но не вижу, что напечатан «Hello world».

Вот мой пользовательский класс

public class CustomQueryComponent extends SearchComponent {
    private static final Logger LOG = Logger.getLogger(CustomQueryComponent.class);

    @Override
    public void prepare(ResponseBuilder responseBuilder) throws IOException {
        LOG.info("Hello world");
    }

    @Override
    public void process(ResponseBuilder responseBuilder) throws IOException {
        LOG.info("Hello world");
    }

    @Override
    public String getDescription() {
        return "CustomQueryComponent";
    }

    @Override
    public String getSource() {
        return null;
    }
}

И мой solrconfig.xml:

//...
    <searchComponent name="customQueryComponentDemo" class="com.company.CustomQueryComponent">
    </searchComponent>

    <requestHandler name="/search" class="solr.SearchHandler">
        <lst name="defaults">
            <str name="echoParams">explicit</str>
            <int name="rows">10</int>
            <bool name="preferLocalShards">false</bool>
        </lst>
        <arr name="first-components">
            <str>customQueryComponentDemo</str>
        </arr>
    </requestHandler>
//...

Журналы Solr, когда я получаю доступ к URL http://localhost:6280/solr//select?q=%3A&wt=json&indent=true

INFO  - 2018-11-27 14:27:25.206; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=10
INFO  - 2018-11-27 14:27:28.204; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=6
INFO  - 2018-11-27 14:27:30.722; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=5
INFO  - 2018-11-27 14:27:35.080; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=3

Кто-нибудь знает почему?Я с нетерпением жду ваших ответов.Большое спасибо!И извините за плохой английский.

1 Ответ

0 голосов
/ 28 ноября 2018

Я в конце концов обнаружил проблему.В solrconfig.xml я определил обработчик запросов /search, используя свой компонент пользовательского поиска.Но когда я проверял это, я использовал /select.


Для получения дополнительной информации :

Вы можете проверить в выводе консоли, успешно ли загружен ваш JAR-файл, через grep более поздние строки после строки, подобной этой:

INFO  org.apache.solr.core.SolrResourceLoader  û Adding 'file:/C:/Users/../custom-search-component.jar' to classloader

Затем перейдите на страницу администрирования Solr> collection_name> Плагины / Статистика> QUERYHANDLER> your_custom_handler> description> Поиск с использованием компонентов.Если вы видите свой пользовательский компонент в этом списке, то все готово. Страница администратора Solr


Спасибо @matslindh за совет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...