У меня есть текстовый файл, содержащий содержимое книги. Я хочу взять этот файл и создать индекс, который позволяет пользователю выполнять поиск по файлу для выполнения поиска.Индексирование и поиск в текстовом файле
Поиск будет состоять из ввода слова. Затем программа вернет следующее:
- Каждая глава, которая включает это слово.
- Номер строки строки , содержащей слово.
- Вся строка, на которой написано слово.
Я попытался следующий код:
infile = open(file)
Dict = {}
word = input("Enter a word to search: ")
linenum = 0
line = infile.readline()
for line in infile
linenum += 1
for word in wordList:
if word in line:
Dict[word] = Dict.setdefault(word, []) + [linenum]
print(count, word)
line = infile.readline()
return Dict
Что-то вроде этого не работает, и, кажется, слишком неудобно для обработки других модулей, которые потребовались бы:
- «или» оператору поиск по одному слову
- Оператор «и» для поиска одного слова и другого в той же главе
Любые предложения были бы замечательными.
Это домашнее задание? Поиск трудный. Используйте существующее решение, такое как ElasticSearch. –
Раньше я работал в системах управления документами, которые делают то же самое, что и для одной книги, для целых библиотек и подтверждают комментарий @AssafLavie, что индексирование текста сложно. Процесс резки текста в словах гораздо сложнее, чем вначале, особенно потому, что некоторые слова на самом деле являются фразами («1 февраля 2016 года» одно слово или три слова? «Яблоко и/или апельсин ..» «три слова или четыре?». Используйте встроенную библиотеку индексирования текста. – christutty
Как сделать это рабочим примером? Вы делаете такие вещи, как переменные, которые не существуют, и пытайтесь «возвратить», когда вы не находитесь в функции. Это затрудняет ответ. – tdelaney