首页 文章

Solr中的易失性数据

提问于
浏览
0

我有一个文档索引,分布在几个分片和副本上 . 大小是ca. 40密耳,我希望它会增长

Problem :用户向这些文档添加信息,这些文档经常更改 . 他们需要将其集成到搜索语法中,例如 funny and cool and cat:interesting . cat将是易失性数据集

据我所知,Solr和Lucene都不支持“真正的更新”,这意味着我必须重新索引整套更改的文档 . 因此,我需要将它连接到外部数据源,如关系数据库 .

我在Lucene做了可扩展搜索(http://lucene.apache.org/core/4_3_0/queryparser/index.html) . 算法非常简单:

通过将"_"添加到所有外部字段来

  • 预处理查询

  • 将这些字段映射到类

  • 每个类扩展org.apache.lucene.search.Filter类并通过重写public public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException 将id转换为bitset:

ResultSet set = state.executeQuery();        
    OpenBitSet bitset = new OpenBitSet();
    while (set.next()) {
        bitset.set(set.getInt("ID"));
    }
  • 然后通过扩展org.apache.lucene.queryparser.ext.ParserExtension,我覆盖这样的解析:

public Query parse(ExtensionQuery eq) throws ParseException{ String cat= eq.getRawQueryString(); Filter filter = _cache.getFilter(cat); return new ConstantScoreQuery(filter); }

  • 使用add方法和done扩展org.apache.lucene.queryparser.ext.Extensions .

HOW 要在Solr做到这一点吗?

我找到了几条建议:

任何想法如何在Solr中做到这一点?也许有一些代码示例?

请考虑一下,我对Solr有点新意 .

谢谢

1 回答

  • 1

    Solr 4.x发布所有支持Atomic Update,我相信可以满足您的需求 .

相关问题