Получив результаты из API пользовательского поиска Google и записав их в JSON, я хочу проанализировать это. JSON для создания действительных документов Elasticsearch. Вы можете настроить родительско-дочерние отношения для вложенных результатов. Однако эта связь, по-видимому, не определяется самой структурой данных. Я пробовал автоматическую загрузку, но безрезультатно.
Ниже приведен пример ввода, который не включает такие вещи, как id или index. Я пытаюсь сосредоточиться на создании правильной структуры данных. Я пытался изменить алгоритмы графа, такие как поиск в глубину, но у меня возникли проблемы с различными структурами данных.
Вот пример ввода:
# mock data structure
google = {"content": "foo",
"results": {"result_one": {"persona": "phone",
"personb": "phone",
"personc": "phone"
},
"result_two": ["thing1",
"thing2",
"thing3"
],
"result_three": "none"
},
"query": ["Taylor Swift", "Bob Dole", "Rocketman"]
}
# correctly formatted documents for _source of elasticsearch entry
correct_documents = [
{"content":"foo"},
{"results": ["result_one", "result_two", "result_three"]},
{"result_one": ["persona", "personb", "personc"]},
{"persona": "phone"},
{"personb": "phone"},
{"personc": "phone"},
{"result_two":["thing1","thing2","thing3"]},
{"result_three": "none"},
{"query": ["Taylor Swift", "Bob Dole", "Rocketman"]}
]
Вот мой текущий подход, работа над которым все еще продолжается:
def recursive_dfs(graph, start, path=[]):
'''recursive depth first search from start'''
path=path+[start]
for node in graph[start]:
if not node in path:
path=recursive_dfs(graph, node, path)
return path
def branching(google):
""" Get branches as a starting point for dfs"""
branch = 0
while branch < len(google):
if google[google.keys()[branch]] is dict:
#recursive_dfs(google, google[google.keys()[branch]])
pass
else:
print("branch {}: result {}\n".format(branch, google[google.keys()[branch]]))
branch += 1
branching(google)
Вы можете видеть, что recursive_dfs()
все еще нуждается в модификации для обработки строк и структур данных.
Я буду продолжать в том же духе, но если у вас есть мысли, предложения или решения, я был бы очень признателен. Спасибо за ваше время.