Цель состоит в том, чтобы иметь возможность как можно быстрее сравнивать слова в документе со словами в наборе документов (создать матрицу терминологического документа).Если возможно, можно ли это сделать (и будет ли это быстро) с помощью Lucene?
Моя мысль (если это сделано мной) состоит в том, чтобы создать дерево терминов в каждом документе, а затем объединить деревья вместе, чтобы сделатьзадавать.Чтобы создать деревья, я бы использовал вложенные словари, где каждый ключ словаря был символом.Каждая позиция в термине будет отличаться по уровню в иерархии
Позиции
1
2
3
4
5
6
Например, при использовании образца строки «Это тест» дерево будет выглядеть как
t
h
i
s
e
s
t
i
s
a
Обратите внимание, что 't' на первом уровне встречается только один раз.Первый словарь будет содержать ключи {'t', 'i', 'a'}.Было бы три словаря второго уровня, содержащие ключи {'h'} {'e'} {'s'}.
Это должно сделать поиск очень быстрым.Максимальное количество шагов в цикле будет количеством символов в самом длинном слове.Часть, которая заставляет мой мозг складываться сама по себе, это то, как я динамически создаю словарь, подобный этому, с определенным доступом к правильному уровню
Пока у меня есть кое-что с эффектом
def addTerm(self, term):
current_level = 0;
for character in list(term):
character = character.lower()
if re.match("[a-z]",character):
self.tree[character] = {}
current_level += 1