apache solr: сумма данных, полученных в результате - PullRequest
7 голосов
/ 03 июня 2010

У нас есть требование, когда нам нужно сгруппировать наши записи по определенному полю и взять сумму соответствующего числового поля

e.x. выберите идентификатор пользователя, сумму (click_count) из группы user_action по идентификатору пользователя;

Мы пытаемся сделать это с помощью Apache Solr и обнаружили, что есть 2 способа сделать это:

  1. Использование функции свертывания поля (http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/), но обнаружил 2 проблемы с этим: 1.1. Это не является частью релиза и доступно в виде патча, поэтому мы не уверены, сможем ли мы использовать это в производстве. 1.2. Мы не возвращаем сумму, а отдельные подсчеты, и мы должны суммировать ее на стороне клиента.

  2. Использование компонента Stats вместе с граненым поиском (http://wiki.apache.org/solr/StatsComponent). Это отвечает нашим требованиям, но недостаточно для очень больших наборов данных.

Я просто хотел узнать, знает ли кто-нибудь какой-либо другой способ добиться этого. Цени любую помощь.

Спасибо

Terance.

1 Ответ

5 голосов
/ 20 октября 2010

Почему вместо этого вы не используете StatsComponent? - Доступно от Solr 1.4 и выше.

$ curl 'http://search/select?q=*&rows=0&stats=on&stats.field=click_count' |
  tidy -xml -indent -quiet -wrap 2000000

<?xml version="1.0" encoding="utf-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">17</int>
    <lst name="params">
      <str name="q">*</str>
      <str name="stats">on</str>
      <arr name="stats.field">
        <str>click_count</str>
      </arr>
      <str name="rows">0</str>
    </lst>
  </lst>
  <result name="response" numFound="577" start="0" />
  <lst name="stats">
    <lst name="stats_fields">
      <lst name="click_count">
        <double name="min">1.0</double>
        <double name="max">3487.0</double>
        <double name="sum">47912.0</double>
        <long name="count">577</long>
        <long name="missing">0</long>
        <double name="sumOfSquares">4.0208702E7</double>
        <double name="mean">83.0363951473137</double>
        <double name="stddev">250.79824725438448</double>
      </lst>
    </lst>
  </lst>
</response>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...