Как реализовать sh таблиц на диске в python? - PullRequest
0 голосов
/ 19 марта 2020

Я делаю некоторый индекс перевернутого индекса. Я попытался следующий код: -

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...