A general and configurable user matching library based on Go language
How to find the target matching users by priority ?
Computing user and get the core data for matching.
- gender :male
- age :27
- gender=male;age=27
- gender=male
- age=27
- gender=female;age=27
- gender=female
- age=27
Get user Matched Property Combinations
and fetch users from userMap
by key in turn.
You can follow the steps below, or use the example.
- app
version
:the version number of applicationlanguage
: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
# ... ...
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
}
}
You can get implodePropertiesString
,combinationList
and matchedCombinationList
after calling ComputeUser()
.
implodePropertiesString
:implode the properties to stringcombinationList
:get the combination list of propertiesmatchedCombinationList
: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)
}
Welcome to use and contribute to this project !