Я пытаюсь использовать Lucene (5.5.0) для токенизации строк (без индексации). Мне необходимо:
- Полностью удалите слова, содержащие числа, поэтому, например, такие слова, как log4j, должны быть удалены из строки
- Я хотел бы разбить свою строку на термины, состоящие из одного слова, а также на термины по 2 грамма, поэтому, например: «завяжите желтую ленту» следует обозначить следующим образом: «галстук», «желтый», «лента», » желтая лента ». Обратите внимание, что "желтый галстук" не является термином, поскольку в середине есть стоп-слово.
Можно ли это сделать с Lucene? Если да, то как?
Что я сделал до сих пор:
- Что касается удаления слов, содержащих числа, я столкнулся с WordDelimetedFilter, который не годится, поскольку в документации он показывает, что он разбивает слово SD500 на «SD» и «500», в то время как я хочу удалить его полностью. Я также нашел NumericPayloadTokenFilter, который выглядит многообещающим (судя по названию), но у меня возникли некоторые проблемы с пониманием того, как с ним работать.
- Что касается 2Grams и 1Grams, я нашел несколько примеров того, как это сделать здесь, здесь и в Документация по NGramTokenizer, но все они, похоже, работают с символами а не на словах, которые мне нужны
заранее спасибо