2017-05-27 27 views
0

场景: 我有很多项目。每个项目都有很多模块&每个模块都有其说明。使用Lucene SpellChecker的有条件建议

现在我正在提供模块描述的搜索。对于拼写错误的单词的建议,我使用了SpellChecker API。我用LuceneDictionary创建了简单的字典。问题是因为索引没有任何参考项目ID,建议来自所有模块,因为我只想在某个项目中搜索。我怎样才能正确创建这种情况下的索引?

一些更多的信息:我使用Hibernate Search的

回答

2

指数拆分

这看起来像一个非常适合的Hibernate Search的分片功能:10.5. Sharding indexes

基本上你可以让每个项目都有其专用的索引。

默认情况下,查询将运行在所有指标的“聚合视图”,但你可以,如果你使用较低级别IndexReader API(只需打开由全名的IndexReader - 包括碎片ID)打开特定指数或申请您的查询过滤器:请参阅enter link description here

多租户

另外,如果你的“项目”代表这就需要彼此完全隔离不同的数据集,你可以看看Hibernate ORM's native support for multi-tenancy

Hibernate Search works fine with ORM's multi-tenancy feature为好,但在这种情况下,人们会想,如果你打开一个本地的IndexReader你仍然会从所有租户访问所有数据,以多租户与分片相结合,否则。