Как построить инвертированный индекс быстрее? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу создать поисковик самостоятельно. Поэтому я хочу построить инвертированный индекс после того, как я закончу поисковик. Но время слишком длинное. Поэтому я надеюсь на несколько советов по поводу кода. (Установка lucene в Windows слишком сложная и раздражающая, поэтому я хочу сделать это самостоятельно и изучить реализацию инвертированного индекса, а не просто использовать lucene)

mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      passwd="121314",
      database="spider"
    )
mycursor = mydb.cursor()

mycursor.execute("SELECT id, data FROM page")
result = mycursor.fetchall()

for row in result:
    lexicon(row[0], row[1])
word_dict = {}
r = redis.Redis(host="127.0.0.1", port=6379, db=0)

def lexicon(idd, data):
    print("Lexiconing and building index.") 
    word_list = jieba.cut_for_search(str(data))

    # stop_words
    with open('stop_words.txt') as f:
        stop_words = [line.strip() for line in f.readlines()]

    for item in word_list:
        if item not in stop_words:
            if item not in word_dict:
                word_dict[item] = {}
                word_dict[item][idd] = 1               
                r.hset(item, idd, 1) 
            else:
                if idd not in word_dict[item]:
                    word_dict[item][idd] = 1
                    r.hset(item, idd, 1) 
                else:
                    word_dict[item][idd] += 1
                    r.hincrby(item, idd, 1) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...