Я хочу создать поисковик самостоятельно. Поэтому я хочу построить инвертированный индекс после того, как я закончу поисковик. Но время слишком длинное. Поэтому я надеюсь на несколько советов по поводу кода.
(Установка 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)