Python 3: разумный поиск текстового файла - PullRequest
1 голос
/ 03 марта 2012

У меня большой текстовый файл (data), который имеет следующую компоновку: a|b|c|d|e|f (хотя в b могут быть трубы).Я ищу в текстовом файле следующий код:

results = 0
Data_List = []
searchphrase = input("Search: ")
with open('data', 'r', encoding="utf8") as inF:
    for line in inF:
        if searchphrase in line:
            a, *b, c, d, e, f = line.strip().split('|')
            b = '|'.join(b)
            results += 1
            print("\n\n", results, "\n", "A: " + a + "\n", "B: " + b + "\n", "C: " + c + "\n", "D: " + d + "\n", "E: " + e + "\n", "F: " + f + "\n\n")
            Data_List.append(f)

b - это фрагмент текста, который содержит заголовок, который пользователь действительно ищет в приведенном выше коде (например, The Lion King).Тем не менее, поиск очень специфичен и возвращает только точные результаты (другими словами, если бы я искал The Lion King, то the lion king не вернется).Как я могу сделать поиск менее конкретным и более обобщенным (например, поиск в Google)?

1 Ответ

5 голосов
/ 03 марта 2012

Вы можете взглянуть на Whoosh .

Whoosh - библиотека классов и функций для индексации текста и последующего поиска в индексе.Это позволяет разрабатывать пользовательские поисковые системы для вашего контента.Например, если вы создавали программное обеспечение для ведения блогов, вы можете использовать Whoosh для добавления функции поиска, позволяющей пользователям искать записи в блогах.

Он может обрабатывать:

Гораздо больше ... Whoosh полностью совместим с Python и Python 3.

К сожалению, нечеткий поиск связан с NLP , одним изсамые сложные предметы в CS , так что это не так просто, как использовать магический трюк с регулярными выражениями.

НЛП трудно, точка.Вот почему Google использует Pigeon Cluster для ранжирования результатов вместо компьютерных алгоритмов (LoL).

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