Example application using Firebase Firestore for autocomplete.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

50 lines
1.2 KiB

#!/usr/bin/env python
import json
import re
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate('service.json')
firebase_admin.initialize_app(cred)
db = firestore.client()
moviesRef = db.collection('movies')
def get_terms(title):
title = title.strip().lower()
title = re.sub(r'[^\w]', ' ', title)
title = re.sub(r'\s+', ' ', title)
parts = title.split(' ')
terms = dict()
for part in parts:
part = part.strip()
if not part or len(part) < 2:
continue
for i in range(2, len(part) + 1):
terms[part[:i]] = True
return terms
def main():
with open('./imdb-top-250.json') as fp:
movies = json.load(fp)
for movie in movies:
# Convert `imdb_position` to an `int`
movie['imdb_position'] = int(movie['imdb_position'])
# Add our autocomplete terms
movie['terms'] = get_terms(movie['title'])
print('Uploading:', movie['title'], '-', movie['imdb_position'], '-', set(movie['terms'].keys()))
# Create the new document
moviesRef.document().set(movie)
if __name__ == '__main__':
main()