我有一个文档索引,分布在多个分片和副本上。大小是ca. 40密耳,我希望它会增长
问题:用户向这些文档添加信息,这些信息会经常更改。他们需要将其集成到搜索语法中,例如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);
}
但如何在Solr中执行此操作?
我找到了几条建议:
任何想法如何在Solr中做到?也许有一些代码示例?
请注意,我对Solr来说是个新手。
谢谢