gorse

command module
v0.1.5-0...-4262119 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2021 License: Apache-2.0 Imports: 3 Imported by: 0

README

anguage: Russian Perflib | English

Краткое описание как запустить через docker

  1. Конечно же скачать сам докер (с этим возможно могут быть проблемы на винде)
  2. В папке проекта открыть командную строку и ввести: docker build -t gorse-perflib .
  3. После того как оно закончило собирать образ, нужно ввести: docker run -d -p 8050:8050 gorse-perflib. Это запустит приложение на фоне

Чтобы остановить образ: docker image ls, найти "IMAGE_ID" и ввести docker container stop "IMAGE_ID" Если надо будет удалить образ (по каким-либо причинам), то нужно ввести: docker image ls, найти "IMAGE ID" нужного образа и ввести docker image rm "IMAGE_ID" --force

В случае если захочется самому запустить на своей машине это всё дело, можно глянуть в сам докерфайл

Сервис общается только по http протоколу и через json

Обновление модели рекомендации по дефолту идёт раз в 5 секунд, настраивается в конфигах

Эндпоинты:

Сервис на 0.0.0.0 адрес по дефолту (localhost/www), так что сервер может быть даже открытым для интернета, если порты открыты на хосте.

Дефолтный порт: 8050

Все эндпоинты которые выдают что-то имеют параметр number, в котором можно указать кол-во возвращаемого результата К примеру: localhost:8050/popular?number=1 выдаст самый популярный предмет (и только один), если number=2 то первые 2 и т.д

В сервис можно засовывать как и id, так и string имена юзеров/предметов, но feedback (далее будет об этом) принимает только string во всех параметрах. К примеру, нельзя сделать параметр ItemId при добавлении предмета/юзера int-овым, будет ошибка. Скорее всего позже я это пофикшу как будет возможность

Все JSON идут в множественном формате (как принимающие, так и отправляющие), т.е они все оборачиваются в []

Сами эндпоинты:

/recommends/{user-id} - не требует тела json, требует user-id, возвращает рекомендации для конкретного пользователя

user-id может быть как и строка, так и id, не имеет разницы Формат возвращаемого json:

          {
             "ItemId":"string",
             "Popularity": int, 
             "Timestamp": "instant"
             "Score": int
          }

P.S: Popularity, может быть > 1, пока не уверен что float Timestamp пока что не разобрался зачем нужен, так что лучше игнорьте (формат его: 0001-01-01T00:00:00Z)

Score это число от 0 до 1, float, представляет из себя счёт конкретной рекомендации для конкретного пользователя

/feedback - требует тела json, добавление предметов, юзеров в сервис

Здесь есть одна оссобенность, юзер добавляется сразу вместе с сущностью которую он открыл То есть, нельзя добавлять юзера без сущности Формат добавления через json:

     {
         "UserId":"id",
         "ItemId":"id",
         "Feedback":float,
     }

P.S Feedback может быть больше 0, float'ом и как я понял, если мы говорим о просмотрах пользователя, это кол-во добавляемых просмотров пользователя.

/random - не требует тела json, пока не до конца понял цели этого,

так как оно даёт одинаковые результаты, но оно выдаёт сущности в таком же формате что и рекомендации

выдаёт результаты в том же формате что и эндпоинт рекомендаций

/users - не требует тела json, выдаёт всех пользователей учтённых в сервисе

формат вывода json:

   [
   	"user1",
   	"user2",
   	"..."
   ]
/user/{user-id}/feedback - получить все вложения в сервис рекомендации от конкретного пользователя

формат вывода json:

    [
         {
             "UserId":"username",
             "ItemId":"id",
             "Rating": int
         }
    ]

P.S Rating и представляет из себя feedback, здесь он выдаётся в формате int

/items - получить все предметы, сохранённые в сервисе рекомендаций

формат вывода json:

    [
             {
                 "ItemId":"id",
                 "Popularity": int,
                 "Timestamp": "instant"
            }
    ]

В сервисе ещё остались парочку эндпоинтов, но думаю для начала хватит и этих

Если понадобятся другие, то можно глянуть на них в файле cmd/rest.go

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package base provides base data structures and utils.
Package base provides base data structures and utils.
Package cmd provides commands for gorse.
Package cmd provides commands for gorse.
Package core provides core components for gorse.
Package core provides core components for gorse.
Package engine manages configuration, storage and update.
Package engine manages configuration, storage and update.
example
Package floats provides functions for numeric computations.
Package floats provides functions for numeric computations.
Package model provides models for item rating and ranking.
Package model provides models for item rating and ranking.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL