首页 > 解决方案 > 如何从集合中获取最高概率的记录。(显示搜索最多的时间)

问题描述

我正在创建包含许多下拉列表(超过 20 个)的应用程序,用户可以选择任何下拉列表来获取结果。每个用户登录他们都在选择下拉菜单并获得结果。我正在做的是,存储每个用户的所有选定下拉值(基本上是搜索字符串),计划显示您的常见搜索,他们可以在其中复制该搜索字符串并获取结果。

下拉选择是多重的

如果它们具有最常见/几乎常见的搜索,则意图是减少选择下拉菜单的工作量。我的数据集看起来像下面存储在 MongoDB 中的数据。

此数据适用于单个用户,同样包含所有用户。

{
  "UserID": "123",
  "SearchData": [
    {
      "searchText": "Area=[Bengaluru,Mumbai] Street_Number=[123,787] Locality=[Hebala,Electronic City] Branch=India",
      "searchDateTime": "2020-04-03"
    },
    {
      "searchText": "Area=Delhi Street_Number=[123,797,753,64] Locality=[Rajbhava,Redfort]",
      "searchDateTime": "2020-04-04"
    },
    {
      "searchText": "Region=[Asia,Europe] Branch=[India,Germany] Area=Delhi",
      "searchDateTime": "2020-04-02"
    },
    {
      "searchText": "Area=[Bengaluru,Mumbai] Team_name=[Team 1, Team 2] IsNewTeam=1 Region=[Asia,Europe] Branch=India",
      "searchDateTime": "2020-03-04"
    },
    {
      "searchText": "Region=United_States Branch=NewYork Team=[Team 1,Team 4] Locality=WTO",
      "searchDateTime": "2020-04-04"
    }
  ]
}

预期结果,例如:您最常搜索/选择的字段和值是(过去 150 天searchText的结果),因为我打算不保留旧数据

1. Area=[Bengaluru,Mumbai] Branch=India Team 1 // Since this is common in many stings(Ex: Here in two strings)
2. Region=[Asia,Europe]
3. Branch=India
4. Team =Team 1
5. Area=[Bengaluru,Mumbai] 
6. IsNewTeam == //If any common match found.
7. Area =  //If any other common values found Expect the **Bengaluru,Mumbai** 
           //Ex : Dehli, Noida. This should come here

任何帮助将不胜感激。

提前致谢

标签: mongodbsearchmongodb-queryaggregateprobability

解决方案


推荐阅读