Android应用程序中的Algolia搜索返回整个数据库而不是仅匹配索引

时间:2018-02-21 20:55:29

标签: android json search algolia

我正在制作一个Android应用程序,使用algolia搜索我在algolia仪表板上制作的索引,如下所示:

algolia dashboard index

现在,当我在我的Android应用程序中使用以下代码查询此内容时:

    index = client.getIndex("games");
    query = new Query();
    query.setAttributesToRetrieve("Name", "FilePathName");
    query.setAttributesToHighlight("Name", "FilePathName");

    index.searchAsync(query, new CompletionHandler() {
        @Override
        public void requestCompleted(JSONObject content, AlgoliaException error) {
            System.out.print(content);
        }
    });

return json语句包含algolia索引中的每个元素。搜索正在运行,因为在json return语句中它显示某些匹配查询字符串,但它们与所有与查询字符串不匹配的游戏混合在一起。如何让json return语句只包含与提供的查询字符串匹配的结果?这是返回语句现在的样子:

    {
  "hits": [
    {
      "Starcraft II": {
      "Consoles": [
        {
          "value": "None",
          "matchLevel": "none",
          "matchedWords": []
        }
      ],
      "FilePathName": {
        "value": "starcraft2",
        "matchLevel": "none",
        "matchedWords": []
      },
      "Genres": [
        {
          "value": "None",
          "matchLevel": "none",
          "matchedWords": []
        }
      ],
      "Name": {
        "value": "Starcraft II",
        "matchLevel": "none",
        "matchedWords": []
      }
    },
    "Left 4 Dead": {
      "Consoles": [
        {
          "value": "None",
          "matchLevel": "none",
          "matchedWords": []
        }
      ],
      "FilePathName": {
        "value": "left4dead",
        "matchLevel": "none",
        "matchedWords": []
      },
      "Genres": [
        {
          "value": "None",
          "matchLevel": "none",
          "matchedWords": []
        }
      ],
      "Name": {
        "value": "Left 4 Dead",
        "matchLevel": "none",
        "matchedWords": []
      }
    }, (A lot more games in here, deleted text to minimize space)

      "objectID": "886515680",
      "_highlightResult": {

        "Borderlands 2": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "borderlands2",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Borderlands 2",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Portal 2": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "portal2",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Portal 2",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Starcraft II": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "starcraft2",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Starcraft II",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Left 4 Dead": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "left4dead",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Left 4 Dead",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Dark Souls": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "darksouls",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Dark Souls",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Tom Clancy's The Division": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "thedivision",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Tom Clancy's The Division",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "name": {
          "Consoles": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "None",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Destiny 2": {
          "Consoles": [
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "destiny2",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Shooter",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Adventure",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Destiny 2",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Call of Duty: Black Ops 3": {
          "Consoles": [
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 360",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PS3",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PS4",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "bo3",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "FPS",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "<em>Call</em> <em>of</em> <em>Duty</em>: Black Ops 3",
            "matchLevel": "full",
            "fullyHighlighted": false,
            "matchedWords": [
              "call",
              "of",
              "duty"
            ]
          }
        },
        "Forza 6": {
          "Consoles": [
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 360",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "forza6",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Racing",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Forza 6",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Minecraft": {
          "Consoles": [
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 360",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "minecraft",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Adventure",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Creation",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Open World",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Minecraft",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Overwatch": {
          "Consoles": [
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Xbox 360",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PS3",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PS4",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "overwatch",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genre": [
            {
              "value": "competitive",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "moba",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "shooter",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Overwatch",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Planetary Annihilation": {
          "Consoles": [
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "Steam",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "planetaryannihilation",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Strategy",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Planetary Annihilation",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Rust": {
          "Consoles": [
            {
              "value": "Steam",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "rust",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Survival",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Rust",
            "matchLevel": "none",
            "matchedWords": []
          }
        },
        "Sea of Thieves": {
          "Consoles": [
            {
              "value": "Xbox 1",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PC",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "seaofthieves",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "Adventure",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "Sea <em>of</em> Thieves",
            "matchLevel": "partial",
            "fullyHighlighted": false,
            "matchedWords": [
              "of"
            ]
          }
        },
        "The Last of Us": {
          "Consoles": [
            {
              "value": "PS4",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "PS3",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "FilePathName": {
            "value": "thelastofus",
            "matchLevel": "none",
            "matchedWords": []
          },
          "Genres": [
            {
              "value": "adventure",
              "matchLevel": "none",
              "matchedWords": []
            },
            {
              "value": "survival",
              "matchLevel": "none",
              "matchedWords": []
            }
          ],
          "Name": {
            "value": "The Last <em>of</em> Us",
            "matchLevel": "partial",
            "fullyHighlighted": false,
            "matchedWords": [
              "of"
            ]
          }
        }
      },
      "_rankingInfo": {
        "nbTypos": 0,
        "firstMatchedWord": 294,
        "proximityDistance": 2,
        "userScore": 0,
        "geoDistance": 0,
        "geoPrecision": 1,
        "nbExactWords": 3,
        "words": 3,
        "filters": 0
      }
    }
  ],
  "nbHits": 1,
  "page": 0,
  "nbPages": 1,
  "hitsPerPage": 10,
  "processingTimeMS": 1,
  "exhaustiveNbHits": true,
  "query": "call of duty",
  "params": "query=call%20of%20duty&hitsPerPage=10&page=0&analytics=false&attributesToRetrieve=*&highlightPreTag=%3Cais-highlight-0000000000%3E&highlightPostTag=%3C%2Fais-highlight-0000000000%3E&getRankingInfo=1&facets=%5B%5D&tagFilters=",
  "index": "games",
  "serverUsed": "c5-use-3.algolia.net",
  "parsedQuery": "call of duty",
  "timeoutCounts": false,
  "timeoutHits": false
}

1 个答案:

答案 0 :(得分:1)

您的索引不是以正确的方式构建的,您应该为每个游戏创建一条记录。确保在构建索引时每个游戏发送一个对象。

相关问题