Reply to DC8QAVuQ8QDaADOIkQYr


Я тут ковыряя тредовый режим для dynamic'а понял, что проще добавить фичу в бэкенд,
чем разгребать свой говнокод на JS.

Так вот суть: в индексе каждому сообщению присваивается topicid в формате UUID(RFC 4122).
Зная topicid мы можем выбрать целиком тред с нужной нам сортировкой.

Чтобы вытащить тред по интересующему сообщению(мы знаем msgid) нам нужно будет сделать 2 запроса:
* Первый - узнаем topicid из сообщения
* Второй - вытягиваем ветку

Здесь и далее запросы в json отправляются методом POST на https://dynamic.lessmore.pw/search2.

Узнаем topicid
====
{
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    },
    {
      "_score": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "query_string": {
      "fields": [
        "msgid"
      ],
      "query": "apfIchd9i8HMMc5DKJNI"
    }
  },
  "size": 1
}
====

В ответ нам вернется документ сообщения
====
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": null,
    "hits": [
      {
        "_index": "idec5",
        "_type": "post",
        "_id": "apfIchd9i8HMMc5DKJNI",
        "_score": 9.252761,
        "_source": {
           ...
           "topicid": "fcb208f7-c947-42bc-a037-73d63b137913"
        },
        "sort": [
          1514976123000,
          9.252761
        ]
      }
    ]
  }
}
====

Теперь зная topicid можно вытянуть весь тред с сортировкой от старых к новым(или наоборот).

Модифицируем первый запрос
====
{
  "sort": [
    {
      "date": {
        "order": "asc"
      }
    },
    {
      "_score": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "query_string": {
      "fields": [
        "topicid"
      ],
      "query": "fcb208f7-c947-42bc-a037-73d63b137913"
    }
  },
  "size": 100
}
====

Ответом будет список с документами ветки отсортированный по дате от старых сообщений к новым.

Новый поиск будет доступен тут https://dynamic.lessmore.pw/search2 в ближайшее время, и нидекс будет наполняться совсем неторопливо.
После полного реиндекса поиск будет объявлен стабильным и доступен по https://dynamic.lessmore.pw/search.
Так же фетчер, маппинг, веб будут документированы и снабжаться инструкцией по развертке.

// Народ, а каких бы еще фич хотелось бы вам?






Help

Code blocks

====
for i=1,10 do
    print "hello world"
end
====

Quotes

> Lorem ipsum dolor sit amet, consectetur adipiscing elit,
> sed do eiusmod tempor incididunt ut labore et dolore magna

Spoilers

Open text...
%%spoiler%%
Top secret! Till end of message...

Headers and splitters

== Chapter 1
A long time ago in a galaxy far, far away....
----
That's all!