elasticsearch匹配得分关键字

cuxqih21  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(276)

我有一个关键字列表与相关分数,我想用它来匹配的elasticsearch索引文件。目标是通过输入关键字来匹配文档,并通过输入分数和文档关键字分数的组合来进行排名。
搜索输入示例:

  1. [{
  2. "name": "golang",
  3. "score": 0.2
  4. }, {
  5. "name": "c++",
  6. "score": 0.13
  7. }, {
  8. "name": "php",
  9. "score": 0.07
  10. }]

两个示例文档:

  1. [{
  2. "name": "John",
  3. "location": "USA",
  4. "scoredKeywords": [
  5. {
  6. "name": "php",
  7. "score": 0.7
  8. }, {
  9. "name": "golang",
  10. "score": 0.3
  11. }, {
  12. "name": "java",
  13. "score": 0.17
  14. }]
  15. }, {
  16. "name": "Bob",
  17. "location": "USA",
  18. "scoredKeywords": [
  19. {
  20. "name": "javascript",
  21. "score": 0.8
  22. }, {
  23. "name": "php",
  24. "score": 0.01
  25. }, {
  26. "name": "golang",
  27. "score": 0.01
  28. }]
  29. }, {
  30. "name": "Dave",
  31. "location": "USA",
  32. "scoredKeywords": [
  33. {
  34. "name": "golang",
  35. "score": 0.9
  36. }, {
  37. "name": "html",
  38. "score": 0.4
  39. }, {
  40. "name": "css",
  41. "score": 0.3
  42. }]
  43. }]

我可以根据需要灵活地进行Map。
我对排名的想法是这样的:

  1. Dave: (overall: 1800)
  2. golang: 0.9
  3. rank: (0.9 * 100) * (0.2 * 100) = 1800
  4. html: 0.4
  5. rank: n/a
  6. css: 0.3
  7. rank: n/a
  8. John: (overall: 490 + 600 = 1090)
  9. php: 0.7
  10. rank: (0.7*100) * (0.07*100) = 490
  11. golang: 0.3
  12. rank: (0.3*100) * (0.2 * 100) = 600
  13. java: 0.17
  14. rank: n/a
  15. Bob: (overall: 7 + 20 = 27)
  16. javascript: 0.8
  17. rank: n/a
  18. php: 0.01
  19. rank: (0.01 * 100) * (0.07 * 100) = 7
  20. golang: 0.01
  21. rank: (0.01 * 100) * (0.2 * 100) = 20

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题