Commit 507ceb30 authored by 赵威's avatar 赵威

diary service request

parent e97f37ce
...@@ -30,7 +30,7 @@ class UserInfoDeserializationSchema extends KafkaDeserializationSchema[UserInfo] ...@@ -30,7 +30,7 @@ class UserInfoDeserializationSchema extends KafkaDeserializationSchema[UserInfo]
object Main { object Main {
def main(args: Array[String]): Unit = { def main(args: Array[String]): Unit = {
// println("###############") // println("###############")
// val query = ES.generateAnswerRequest(List("光子嫩肤", "水光针"), List("丰胸", "胸部塑身")) // val query = ES.generateServiceDiaryRequest(List("光子嫩肤", "水光针"), List("丰胸", "胸部塑身"), -1)
// println("###############") // println("###############")
val env = StreamExecutionEnvironment.getExecutionEnvironment val env = StreamExecutionEnvironment.getExecutionEnvironment
...@@ -54,13 +54,15 @@ object Main { ...@@ -54,13 +54,15 @@ object Main {
stream.map { user => stream.map { user =>
val projects = user.projects.toList val projects = user.projects.toList
val secondDemands = user.secondDemands.toList val secondDemands = user.secondDemands.toList
val cityId = user.cityId
println(user.deviceId) println(user.deviceId)
println(projects.mkString(" ")) println(projects.mkString(" "))
val diaryReq = ES.generateDiaryRequest(projects, secondDemands, user.cityId) val diaryReq = ES.generateDiaryRequest(projects, secondDemands, cityId)
val tractateReq = ES.generateTractateRequest(projects, secondDemands) val tractateReq = ES.generateTractateRequest(projects, secondDemands)
val answerReq = ES.generateAnswerRequest(projects, secondDemands) val answerReq = ES.generateAnswerRequest(projects, secondDemands)
ES.test(diaryReq, tractateReq, answerReq) val serviceDiaryReq = ES.generateServiceDiaryRequest(projects, secondDemands, cityId)
ES.test(diaryReq, tractateReq, answerReq, serviceDiaryReq)
println("########################") println("########################")
user.deviceId user.deviceId
......
...@@ -26,7 +26,8 @@ import com.sksamuel.elastic4s.requests.searches.queries.funcscorer.{ ...@@ -26,7 +26,8 @@ import com.sksamuel.elastic4s.requests.searches.queries.funcscorer.{
CombineFunction, CombineFunction,
FunctionScoreQueryScoreMode, FunctionScoreQueryScoreMode,
WeightScore, WeightScore,
ScoreFunction ScoreFunction,
ScriptScore
} }
object ESClient { object ESClient {
...@@ -59,14 +60,20 @@ object ES { ...@@ -59,14 +60,20 @@ object ES {
} }
} }
def test(diaryRequest: SearchRequest, tractateRequest: SearchRequest, answerRequest: SearchRequest) = { def test(
diaryRequest: SearchRequest,
tractateRequest: SearchRequest,
answerRequest: SearchRequest,
serviceDiaryReq: SearchRequest
) = {
// TODO read from config // TODO read from config
val client: ElasticClient = ESClient.create("172.16.52.33", 9200, "elastic", "gengmei!@#") val client: ElasticClient = ESClient.create("172.16.52.33", 9200, "elastic", "gengmei!@#")
val multiReq = multi( val multiReq = multi(
diaryRequest, diaryRequest,
tractateRequest, tractateRequest,
answerRequest answerRequest,
serviceDiaryReq
) )
println(multiReq.show) println(multiReq.show)
...@@ -146,10 +153,8 @@ object ES { ...@@ -146,10 +153,8 @@ object ES {
FieldSort("good_click").desc(), FieldSort("good_click").desc(),
FieldSort("last_update_time").desc() FieldSort("last_update_time").desc()
) )
// println("diary query")
println("diary query") // println(res.show)
println(res.show)
res res
} }
...@@ -193,10 +198,8 @@ object ES { ...@@ -193,10 +198,8 @@ object ES {
.sortBy( .sortBy(
FieldSort("_score").desc() FieldSort("_score").desc()
) )
// println("tractate query") // println("tractate query")
// println(res.show) // println(res.show)
res res
} }
...@@ -244,10 +247,57 @@ object ES { ...@@ -244,10 +247,57 @@ object ES {
FieldSort("smart_rank_v2").desc(), FieldSort("smart_rank_v2").desc(),
FieldSort("good_click").desc() FieldSort("good_click").desc()
) )
// println("answer query") // println("answer query")
// println(res.show) // println(res.show)
res
}
def generateServiceDiaryRequest(
projects: List[String],
secondDemands: List[String],
cityId: Int = -1
): SearchRequest = {
val size = 15
val includes = List("id", "tags_v3")
var shouldListBuffer: ListBuffer[Query] = ListBuffer.empty[Query]
if (projects.size > 0) {
shouldListBuffer += TermsQuery("tags_v3", projects)
}
if (secondDemands.size > 0) {
shouldListBuffer += TermsQuery("second_demands", secondDemands)
}
val res = search("gm-dbmw-diary-read")
.query {
functionScoreQuery(
)
.functions(
ScriptScore(
"return (doc.containsKey('new_smr')&&doc['new_smr'].value>0?doc['new_smr'].value:0.0) * ((doc.containsKey('is_promote')&&doc['is_promote'].value?5.0:0.0)+(doc.containsKey('has_before_cover')&&doc['has_before_cover'].value?2.0:0.0) + (doc.containsKey('has_after_cover')&&doc['has_after_cover'].value?2.0:0.0)+(doc.containsKey('has_after_cover')&&doc['has_after_cover'].value?8.0:0.0))"
),
WeightScore(1000000).filter(termQuery("doctor.hospital.city_tag_id", cityId)),
WeightScore(1000000).filter(termQuery("service_nearby_city_tag_ids", cityId))
)
.scoreMode(FunctionScoreQueryScoreMode.Sum)
.boostMode(CombineFunction.Sum)
.query {
boolQuery()
.must(
termQuery("is_online", true),
termQuery("has_service", true),
termQuery("service.is_promote", true),
rangeQuery("content_level").gte(3)
)
.not(termQuery("show_by_index", 2), termQuery("doctor.hospital.id", "shyxylmryy2203"))
.should(shouldListBuffer.toList)
.minimumShouldMatch(1)
}
}
.size(size)
.sourceInclude(includes)
// println("service diary query")
// println(res.show)
res res
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment