我正在制作一个Android应用程序,使用algolia搜索我在algolia仪表板上制作的索引,如下所示:
现在,当我在我的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
}
答案 0 :(得分:1)
您的索引不是以正确的方式构建的,您应该为每个游戏创建一条记录。确保在构建索引时每个游戏发送一个对象。