Поиск набора ключевых слов в большой строке

1

Я должен выполнить поиск в текстовом файле или большой строке, чтобы проверить, содержит ли текст набор ключевых слов (может быть, миллионы). Если он содержит ключевые слова, я должен выделить все ключевые слова, которые были сопоставлены. Какой подход следует принять для этого? Предоставляет ли lucene решение для этого?

  • 0
    Текстовый файл или строка? Это не совсем похоже на то же самое
  • 0
    В любом случае - вы можете использовать Trie или Bloom Filter.
Показать ещё 3 комментария
Теги:
elasticsearch
solr
lucene
nutch

2 ответа

1
Лучший ответ

Вы отметили свой вопрос с помощью Elasticsearch - если вы открыты для использования ES, я думаю, что Percolation с подсветкой может соответствовать тому, что вам нужно. Вы можете зарегистрировать каждое ключевое слово как отдельный запрос с перколятором, а затем запустить каждый документ или строку через него. Он вернет список совпадающих запросов. Вы также можете комбинировать его с подсветкой.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-percolate.html

http://blog.qbox.io/elasticsesarch-percolator

  • 0
    У меня есть один документ и миллионы ключевых слов.
  • 0
    поэтому создайте 10000 отдельных перколяционных запросов со 100 ключевыми словами в каждом плюс выделение. 10 тыс. Запросов перколяции не являются чрезмерными, просто требуется масштабирование до большего количества узлов ES (оно масштабируется горизонтально, в основном требуется дополнительный процессор).
Показать ещё 1 комментарий
0

Вы можете использовать lucene ShingleFilter

Вы найдете множество примеров в сети, вот один http://www.massapi.com/class/sh/ShingleFilter.html

  • 0
    Я посмотрю в предложенное решение. Благодарю.
  • 0
    Мне не нужно создавать связанные токены. Я должен найти отдельные токены и выделить их. Например - я хочу найти «стек, переполнение, обмен» (в реальном случае это будет большой список) в тексте "This stack is empty. Lets exchange places" , затем он должен выделить (или хотя бы найти) stack и exchange в строке.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню