@proelixir

Страница 757 из 1045
Vladimir
14.10.2017
04:43:27
Немного бигдаты завезли: http://commoncrawl.org/2017/09/september-2017-crawl-archive-now-available/ The crawl archive for September 2017 is now available! The archive is located in the commoncrawl bucket at crawl-data/CC-MAIN-2017-39/. It contains 3.01 billion web pages and over 250 TiB of uncompressed content. Может кому будет полезно. :)

Alexey
14.10.2017
11:39:11
Лови ошибки в `Task.await` и рейзи
а как их ловить, если try/rescue и try/catch не ловят падение таска при его ожидании с помощью Task.await? если использовать генсервер, то сообщения все равно будут обрабатываться одно за другим. т.е. тогда надо делать 2 генсервера для обработки (со стратегией simple_one_for_one для динамического создания child'ов супервизором). при этом все равно не получится запустить их параллельно и дождаться выполнения в месте вызова (как при использовании Task.await для списка тасков). в результате, если кому интересно, я сделал так: elixir [MyApp.Foo, MyApp.Bar] |> Enum.map(fn x -> sup_pid = MyApp.TaskSupervisor Task.Supervisor.async_nolink(sup_pid, x, :run, []) end) |> Enum.map(&Task.yield/1) |> Enum.each(fn {:ok, _result} -> :ok {:exit, {error, _stack}} -> raise error nil -> raise "timeout running task" end) не знаю, насколько это идиоматично, - фактически мне было надо просто зарирейзить ошибку в основном процессе запроса.

Alex
14.10.2017
11:47:06
может Task.async_stream заюзать?

Alexey
14.10.2017
11:53:19
его не пробовал - спасибо, посмотрю вечером, получится ли прикрутить

Google
Alexey
14.10.2017
13:55:32
еще можно попробовать применить Flow вместо task/await

Yuri
14.10.2017
15:13:03
господа, есть такой Map: map = %{aggregations: %{brand_text: %{terms: %{field: "brand_text"}}, merchant: %{terms: %{field: "merchant"}}}, query: %{bool: %{minimum_should_match: 1, should: %{match: %{name: "query"}}}}} как мне сюда map[:query][:bool]. вставить другой Map, например: %{term: %{merchant: "Lacywear"}}

чет ваканалья совсем с мапами

Alexey
14.10.2017
16:03:42


может что-то вроде этого? new_val = %{term: %{merchant: "Lacywear"}} %{map | query: %{map.query | bool: %{map.query.bool | new_val} }

но если Путин умеет вложенные мапы, то будет лучше. понятнее

Dmitry
14.10.2017
16:12:27
Путин умеет положить в любое существующее место

Т.е. он не может создать место а потом в него положить

Единственное ограничение

Alexey
14.10.2017
16:13:17
а. синтаксис в моем примере - тоже не может обновить ключ, если его в мапе нету

Dmitry
14.10.2017
16:13:44
Потому что put_in кладёт не обязательно в мап

Alexey
14.10.2017
16:13:56
вернее. значение ключа, которого нету

Google
Yuri
14.10.2017
16:21:09
а если уже есть :term

он его обновляет, а не дополняет :bool

Buckler
15.10.2017
03:12:03
Hello, Stella! Please, calculate: 33+39=... If you don't answer - you'll get banned from the channel... Good luck!

Masson
15.10.2017
03:59:08
Ребята, а есть какое-нибудь руководство от программиста к программисту, например, по Elixir и или Erlang?

Включая, к примеру, хорошие и плохие практики.

Alexander
15.10.2017
04:02:33
Включая, к примеру, хорошие и плохие практики.
я был бы рад сам такое увидеть, пока Эликсир - это дикий запад. Как напишешь - так и будет.

Masson
15.10.2017
04:02:58
Понял вас. А по Erlang?

Alexander
15.10.2017
04:12:36
Понял вас. А по Erlang?
я вот эти пользую https://github.com/inaka/erlang_guidelines

там как раз в формате good/bad

для эликсира самое близкое - это credo

но там все очень субъективно

Masson
15.10.2017
06:55:45
Спасибо!

Dmitry
15.10.2017
07:30:39
Есть такая по эликсиру

Только нифига не помогает если нету мозг или опыт

А если есть - то не нужны такие книжки

Так что лучше просто программировать, потом смотреть какое получилось говно и программировать опять

Я так делал

Alexey
15.10.2017
07:49:25
true story ))))

Yuri
15.10.2017
17:43:02
кто нить шарит elasticsearch? как сделать запрос, чтобы когда я фильтрую по полю, показывались остальные варианты, чтобы я мог выбирать несколько термсов

Google
Yuri
15.10.2017
17:51:03
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html ?
да чет, все перепробывал, а он показывает ток тот термс по которому я фильтрую, другие скрывает

Александр
15.10.2017
17:51:29
ты хочешь показать вначале те что подошли, а потом все подряд?

или хочешь по нескольким условиям искать?

Yuri
15.10.2017
17:52:18
допустим я делаю fulltext поиск по title^ получаю результаты, потом фильтрую по полю Бренда например

ну стандартная штука во всех магазинах

Александр
15.10.2017
17:53:07
"should" : [ { "term" : { "tag" : "wow" } }, { "term" : { "tag" : "elasticsearch" } } ], "minimum_should_match" : 1,

если по названию ищешь должно же быть строго

значит по title ищешь в must

всё остальное суёшь в should

Yuri
15.10.2017
17:54:35
хм, разделять надо

Александр
15.10.2017
17:55:55
тогда получиться, что все результаты будут с совпадением по title, те что с брендом вначале

а те что по бренду не совпали в конце

или что значит "разделять"?

ты хочешь подзапрос сделать?

Yuri
15.10.2017
18:00:14
ты хочешь подзапрос сделать?
отфильтровать результат, которые получил по title

вот типо такого https://github.com/ankane/searchkick#aggregations

Александр
15.10.2017
18:01:12
ну в эластике нет подзапросов, там хитрые скрипты на самом деле я скриптами ни разу не пользовался, всё получилось грамотной организацией данных и bool + boost запросами

попробуй как я выше написал про must по title и should по всему остальному

ааа, в таком фильтре нужно точное сравнение

Yuri
15.10.2017
18:03:25
ну вот так он фильтрует, но все равно не показывает мне все merchant query: %{ bool: %{ must: %{ multi_match: %{ query: query, type: "most_fields", fields: [ "name", "body" ] } }, should: %{ term: %{ merchant: "BUTIK" } }, minimum_should_match: 1 }, },

Google
Александр
15.10.2017
18:03:38
ааа

я понял

Yuri
15.10.2017
18:04:22
он просто показывает один BUTIK в секции aggregations в ответе

Александр
15.10.2017
18:04:25
у тебя проблема не в фильтрации, а показать из каких брендов есть товары списком, но чтобы товары были с пагинацией?

Yuri
15.10.2017
18:04:57
ну да

что бы мол потом отфилььтровать по нескольким брендам

типо ща стоит AND и все, не дает выбрать еще бренды

вот что отдает: "merchant" => %{"buckets" => [%{"doc_count" => 250, "key" => "BUTIK"}], "doc_count_error_upper_bound" => 0, "sum_other_doc_count" => 0}},

Александр
15.10.2017
18:06:35
а у тебя какая версия эластика?

там менялось это несколько раз

я когда делал это facets называлось

сейчас aggregations

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html

это тебе надо?

Yuri
15.10.2017
18:08:06
Version: 5.6.1, Build: 667b497/2017-09-14T19:22:05.189Z, JVM: 1.8.0_102

да, так называеться, но это не дает понимания )

в запрос я добавляю: aggregations: %{ merchant: %{ terms: %{ field: "merchant", order: %{ _term: "asc" }, size: 20 } }, }

здесь чет надо в секции query мне кажеться

Александр
15.10.2017
18:11:23
да, у тебя будет: { "query": { ... (то что у тебя уже получается) }, "aggregations": { ... то что нужно добавить из доки } }

Yuri
15.10.2017
18:12:03
да

Google
Yuri
15.10.2017
18:12:08
так и есть )

Александр
15.10.2017
18:12:10
соответственно возьми самый простой пример { "aggs" : { "genres" : { "terms" : { "field" : "genre" } } } }

и поподставляй свои поля и посмотри на результат

Yuri
15.10.2017
18:13:12
так и делаю

Александр
15.10.2017
18:13:31
и что не получается?

Yuri
15.10.2017
18:13:39
query: %{ bool: %{ must: %{ multi_match: %{ query: query, type: "most_fields", fields: [ "name", "body" ] } }, should: %{ term: %{ merchant: "BUTIK" } }, minimum_should_match: 1 }, }, aggregations: %{ merchant: %{ terms: %{ field: "merchant", order: %{ _term: "asc" }, size: 20 } } } }

он все фильтрует

но, не показывает всех merchant

которые были без фильтрации по нему

понимаешь

%{"_shards" => %{"failed" => 0, "skipped" => 0, "successful" => 5, "total" => 5}, "aggregations" => %{"merchant" => %{"buckets" => [%{"doc_count" => 250, "key" => "BUTIK"}], "doc_count_error_upper_bound" => 0, "sum_other_doc_count" => 0}}, "hits" => %{"hits" =>

если убрать это should: %{ term: %{ merchant: "BUTIK" } }, minimum_should_match: 1

то будет результат: %{"_shards" => %{"failed" => 0, "skipped" => 0, "successful" => 5, "total" => 5}, "aggregations" => %{"merchant" => %{"buckets" => [%{"doc_count" => 291, "key" => "AIZEL"}, %{"doc_count" => 250, "key" => "BUTIK"}, %{"doc_count" => 5, "key" => "Bambolo"}, %{"doc_count" => 681, "key" => "Elyts"}, %{"doc_count" => 119, "key" => "Finn Flare"}, %{"doc_count" => 300, "key" => "GroupPrice"}, %{"doc_count" => 273, "key" => "Izobility.com"}, %{"doc_count" => 20, "key" => "KANZLER"}, %{"doc_count" => 196, "key" => "Lacywear"}, %{"doc_count" => 8, "key" => "MercLondon"}, %{"doc_count" => 10, "key" => "O'STIN"}, %{"doc_count" => 207, "key" => "PRESLI"}, %{"doc_count" => 156, "key" => "THE OUTLET"}, %{"doc_count" => 142, "key" => "TOPBRANDS"}, %{"doc_count" => 11, "key" => "TomTailor"}, %{"doc_count" => 73, "key" => "Vkostume"}, %{"doc_count" => 4, "key" => "Westland"}, %{"doc_count" => 87, "key" => "Zarina"}, %{"doc_count" => 48, "key" => "littlegentrys"}, %{"doc_count" => 6, "key" => "paper-shop"}], "doc_count_error_upper_bound" => 0, "sum_other_doc_count" => 858}}, "hits" => %{"hits" =>

вот мне нужен такойже список чтобы можно было выбирать несколько

Страница 757 из 1045