public static function getInstance(Kwf_Component_Data $subroot)
    {
        while ($subroot) {
            if (Kwc_Abstract::getFlag($subroot->componentClass, 'subroot')) {
                break;
            }
            $subroot = $subroot->parent;
        }
        if (!$subroot) $subroot = Kwf_Component_Data_Root::getInstance();

        static $instance = array();
        if (!isset($instance[$subroot->componentId])) {
            $analyzer = new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive();
            $analyzer->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_ShortWords(2));
            //$stopWords = explode(' ', 'der dir das einer eine ein und oder doch ist sind an in vor nicht wir ihr sie es ich');
            //$analyzer->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_StopWords($stopWords));
            Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzer);
            Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
            Zend_Search_Lucene_Storage_Directory_Filesystem::setDefaultFilePermissions(0666);
            $path = 'cache/fulltext';
            $path .= '/'.$subroot->componentId;
            try {
                $instance[$subroot->componentId] = Zend_Search_Lucene::open($path);
            } catch (Zend_Search_Lucene_Exception $e) {
                $instance[$subroot->componentId] = Zend_Search_Lucene::create($path);
            }
        }
        return $instance[$subroot->componentId];
    }