我们正在使用Sql Server 2012全文索引,但是我们希望将我们的数据库移至Sql Azure。使用迁移工具,它告诉我们全文索引与Sql Azure不兼容(即使是预览版的v12也不支持它,因此看起来并不像他们打算支持它)。使用Lucene.NET限制数据
因此,我们正在寻找替代品,迄今为止我发现的最好的方法是使用Lucene.NET和AzureDirectory(https://azuredirectory.codeplex.com)。这将允许我们将索引存储在blob存储中,并将其缓存在本地托管网站的VM的文件系统上(也在Azure中)。
我们遇到的问题是,我们打算索引的数据是诸如新闻故事之类的项目,由于我们有一个发布模型,所有用户都无法看到这些新闻故事,所以只有部分用户可以看到它们。在搜索新闻报道时使用全文索引,我们可以通过简单地加入对他们可见的内容来限制使用搜索的数据,但是使用Lucene我们将无法做到这一点。
我们想出的想法是将新闻报道与索引中的新闻报道集合在一起,允许用户查看新闻报道,恐怕我对Lucene非常陌生,而且我无法找到最佳方式然而
document.Add(new Field("Title",
news.Title,
Field.Store.YES,
Field.Index.ANALYZED,
Field.TermVector.NO));
document.Add(new Field("Content",
news.Content,
Field.Store.YES,
Field.Index.ANALYZED,
Field.TermVector.NO));
,如果我们定义为
IEnumerable<int>
的用户id的集合,我们怎样才能把它们添加到新闻故事指数:要做到这一点,我们要添加索引的新闻报道,像这样然后针对给定的用户ID有效地搜索它们。此外,如果我们将100或1000个UserIds添加到lucene文档中,性能会如何。有没有比这条路更好的方式,因为这可能是一个可怕的想法(可能是一个可怕的想法)?