Я делаю некоторый индекс перевернутого индекса. Я попытался следующий код: -
def replace_symbols(text):
"""
Remove symbols like ".", ",", "!" etc.
"""
return text.replace('?', '').replace('.', '').replace('!', '').replace('"', '').replace("'", '').replace('(', '').replace(')', '')
def handle_case(word):
"""
This function changes the case of given word such that word = Word != WORD for better handling of duplicates
"""
new_word=(word)
if word[0].isupper() and word[1:].islower():
new_word=word.lower()
elif word.isupper():
new_word=word
return new_word
word_index={}
documents={}
initial_unique_id=1
def index_document(document):
text=replace_symbols(document['text'])
if len(documents)>0:
_id=int(max(documents))+1
else:
_id=initial_unique_id
for word in text.split():
word=handle_case(word)
if word in word_index:
if _id not in word_index[word]:
word_index[word].append(_id)
else:
word_index[word]=[_id]
documents[_id]=document
def search(search_term):
results=[]
for word in search_term.split(' '):
if word in word_index:
for doc_id in word_index[word]:
if doc_id not in results:
results.append(doc_id)
return get_docs(results)
def get_docs(doc_id_list):
docs=[]
for doc_id_ in doc_id_list:
if doc_id_ not in docs and doc_id_ in documents:
docs.append(documents[doc_id_])
return docs
index_document({'text': 'Hello World!'})
index_document({'text': 'How are you? Hello'})
for resp in search('hello'):
print(' ',resp['text'], end='\n\n')
Я пытаюсь этот код с большим набором данных с около 200 000 уникальных слов и попытался json, выбрать для загрузки их в память. Я хочу, чтобы они были загружены с диска. Есть около 40 000 документов и 200 000 уникальных слов, как я уже говорил выше. Как я могу реализовать дисковые таблицы ha sh.