Skip to content

A general and configurable user matching library based on Go language / 一个基于Go语言实现的通用且可配置化的用户匹配库

License

Notifications You must be signed in to change notification settings

WGrape/matching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

matching

MIT license

A general and configurable user matching library based on Go language

Overview

How to find the target matching users by priority ?

image

1、Core Matching Logic

Computing user and get the core data for matching.

(1) User properties

  • gender :male
  • age :27

(2) Property Combinations

  • gender=male;age=27
  • gender=male
  • age=27

(3) Matched Property Combinations

  • gender=female;age=27
  • gender=female
  • age=27

2、Store Users and Get Matched Users

(1) Store Users

image

(2) Get Matched Users

Get user Matched Property Combinations and fetch users from userMap by key in turn.

Usage

You can follow the steps below, or use the example.

1、Configuration

  • app
    • version :the version number of application
    • language :the different agents
  • strategy
    • rules :the different rules of matching
Expand config/config.yaml file
app:
  version: v1.0.0
  language: go1.16.10

strategy:
  rules:
    # If it is a woman, first match the male, then the female
    - gender=0:
        - gender=1
        - gender=0

    # If male, match female first, then male
    - gender=1:
        - gender=0
        - gender=1
    # ... ...

2、Create strategy object

Create a strategy object and call AutoCreateStrategy().

package main
import (
    "matching/pkg/strategy"
)

func main(){
    st := strategy.UseStrategy{}
    err := st.AutoCreateStrategy("config/config.yaml")
    if err != nil {
        fmt.Println(err.Error())
        return
    }	
}

3、Compute user

You can get implodePropertiesStringcombinationList and matchedCombinationList after calling ComputeUser().

  • implodePropertiesString :implode the properties to string
  • combinationList :get the combination list of properties
  • matchedCombinationList :get the matched combination list of properties
package main
import (
  "matching/pkg/strategy"
)

func main() {
    user := strategy.User{
      UserId: "12345678",
      Score:  0.0,
      Gender: 0,
      Age:    "80",
      City:   "Yon",
      Status: 1,
    }
    implodePropertiesString, combinationList, matchedCombinationList := st.ComputeUser(user)
}

Contributing

Welcome to use and contribute to this project !

License

LICENSE

About

A general and configurable user matching library based on Go language / 一个基于Go语言实现的通用且可配置化的用户匹配库

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages