2016-11-23 2 views
2

Я использую Nutch 1.12 с Elastic Search, и я хотел бы добавить поле динамически в NutchDocument.Динамически добавлять поля в NutchDocument

В настоящее время я могу добавить значения статического поля в NutchDocument и в состоянии проиндексировать его в Elastic Search.

Вот фрагмент кода моей индексации фильтра:

public class CustomIndexFilter implements IndexingFilter { 

    private Configuration conf; 

    public Configuration getConf() { 
     return conf; 
    } 

    public void setConf(Configuration conf) { 
     this.conf = conf; 
    } 

    @Override 
    public NutchDocument filter(NutchDocument doc, Parse parse, Text url, CrawlDatum datum, Inlinks inlinks) { 
     String content = parse.getText(); 
     doc.add("pageLength", content.length()); 
     return doc; 
    } 
} 

Я думаю, что NutchDocument создается после разбора. Таким образом, значения полей должны быть предоставлены до этого (не знаю, где я должен это предоставить). Ищите обходной путь для этого.

Любая помощь будет оценена :)

ответ

2

Я предложу обходной путь для этого. Вы можете использовать NACH REST api для создания настраиваемой конфигурации с настраиваемыми параметрами для прогона сканирования. Затем прочитайте эту конкретную конфигурацию внутри своего настраиваемого плагина индексатора. Таким образом вы можете управлять индексом, задавая поля в NutchDocument после прочтения их из conf. HTH

2

NutchDocument создается во время операции индексирования и, как вы выяснили, модифицированный IndexingFilters. Последние часто используют метаданные, исходящие от разбора, но сами поля создаются главным образом с помощью IndexingFilters (некоторые из них создаются главным кодом индексирования). Существует несколько плагинов, которые позволяют создавать сгенерированные поля на основе конфигурации, например. index-metadata или index-static.

Смежные вопросы