Solrj (1.4.1) связанный с производительностью запрос - PullRequest
0 голосов
/ 15 марта 2011

Я использую Solrj в качестве клиента Solr в моем проекте.

При поиске нескольких слов кажется, что Solrj занимает больше времени для отправки ответа, например (8 - 12 секунд).При поиске большинства других слов кажется, что Solrj занимает меньше времени.

Например, если я размещаю поисковый URL в браузере, он показывает QTime только в миллисекундах.1007 *http://serverName/solr/mydata/select?q=computing&qt=myhandler&fq=category:1

Но, если я запрашиваю то же самое, используя Solrj из моего проекта, как показано ниже, потребуется много времени (8 - 12 секунд), чтобы получить те же результаты.Следовательно, я подозреваю, занимает ли Solrj так много времени для получения результатов.

SolrServer server = new CommonsHttpSolrServer (url);SolrQuery query = new SolrQuery («вычисление»);query.setParam ("qt", "myhandler");query.setFilterQueries ( "категория: 1");query.setHighlight (ложь);QueryResponse rsp = server.query (query);

Я пробовал оба метода POTH и GET.Но оба требуют много времени.

Любая идея, почему Solrj тратит столько времени на конкретные слова.В качестве результата поиска возвращается список из 40 документов.Я даже прокомментировал выделение для этого.

И любой способ ускорить его.

Примечание: я использую Tomcat и установил размер кучи около 1024 МБ.И я использую версию Solr 1.4.1.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 25 сентября 2012

Мне удалось настроить PHP, чтобы добиться равной производительности с SolrJ в Java. Тем не менее, это было много работы и не полное доказательство. Самая большая проблема с PHP - не скорость, а утечка памяти. Когда вы индексируете тысячи записей, вы должны проходить через них, и это приводит к утечкам памяти в PHP. Я разделил пакетный процесс PHP с помощью сценариев bash для вызова меньших пакетов в PHP. Но я все равно получу неудачную индексацию. SolrJ Java решает проблемы утечки памяти и обеспечивает лучшую надежность. Java работает быстро, без необходимости переходить через творческие трюки, чтобы получить скорость, как я это делал со скриптами bash и PHP.

Кроме того, не передавайте свои записи в SolrJ. Включите автоматическую фиксацию в конфигурации solr и позвольте Solr обрабатывать фиксацию. Так намного быстрее.

0 голосов
/ 30 марта 2011

SolrJ не оказывает большого влияния на производительность по сравнению с прямым попаданием в Solr. Я использую его, и запросы, занимающие 2-3 мс в Solr, возвращаются по сети примерно через 12-15 мс, включая прохождение полного веб-стека и сортировку в Json. Я подозреваю, что есть ошибка в другом месте вашего кода. Попробуйте получить профиль или набросать некоторые операторы печати, чтобы увидеть, где теряется время. Если вы идете по сети (я подозреваю, что вы есть), попробуйте сделать пинг, чтобы увидеть, каковы времена ответа. Вы также можете попробовать запрос скручивания с вашего исходного сервера на сервер Solr, чтобы узнать, каково время отклика

...