在azure app服务中使用Lucene.net的最佳方法

时间:2017-05-15 12:20:33

标签: c# .net azure lucene hosting

我正在将我的azure云服务项目转换为azure app服务。我有一个webrole和一个worker角色用于搜索操作(我使用lucene.net进行搜索操作)。我想要最好的解决方案,这将为我带来良好的性能并节省运行成本。所以我正在寻找实现我的搜索工作者角色的最佳方法。我有一些选择,每个场景我都有一些疑问: -

(i)我可以在我的网络应用程序中添加lucene索引代码。但这可能会影响我的网站的性能(因为lucene将与创建和索引文档并行运行)。

(ii)当我听到azure web应用程序有6个部署插槽时,我可以使用其中一个永久托管我的lucene.net项目,而lucene项目会将结果返回给我的web项目。

(iii)我有一个用于博客的azure web应用程序。我应该使用该Web应用程序来托管lucene项目(子域中的主机)

(iv)我有另一个选择是天蓝色搜索,但根据我的发现

  • 我无法控制azure搜索自定义。

  • 另一个原因是成本,免费计划提供有限的文件限制和 标准计划成本很高。

  • 一个原因是我以编程方式创建了一些文档 运行时我认为azure搜索不允许我这样做。

  • azure搜索是否允许我选择azure table作为数据源?一世 认为它只允许Sqlazure。

我的确切要求是: -

我需要最少5个索引,总共需要大约50,000个文档。我的数据来源是

1.SqlAzure
2.Azure tables
3.Azure blobs

请为我的方案建议我最好的方法,任何帮助都非常明显!!!

1 个答案:

答案 0 :(得分:2)

"最佳方法"是基于意见的,无法肯定地回答。话虽如此,在做出这个决定时需要考虑一些事情。

  

(i)我可以在我的网络应用程序中添加lucene索引代码。但这可能会影响   我的网站的性能(因为lucene将并行创建和   索引文件)。

这是事实。索引代码将消耗Web App的计算资源。

  

(ii)当我听到azure web应用程序有6个部署插槽时,我可以使用一个   他们永久主持我的lucene.net项目和lucene项目   将结果返回到我的网站项目。

Web App部署插槽不是单独的实例 - 它们共享您的Web App的计算资源。例如,如果您有一个具有1个核心和1.75GB RAM的B1基本实例,则这些资源将在所有插槽中共享。每个插槽都没有为您提供1.75GB RAM和1个内核的第二个实例。这将使您处于与上面#1相同的情况。

  

(iii)我有一个用于博客的azure web应用程序。我应该使用该网络应用程序吗?   主机lucene项目(子域中的主机)

可能。您可以部署和监视索引以查看索引如何影响性能。

对于Azure搜索,它肯定允许您在五个字段上编制索引。您不必只索引Azure SQL或表存储中存在的文档 - 您可以索引任何内容。您可以使用API​​端点以JSON格式发送所需的任何文档以进行索引。这样做的文件here。使用此方法,您甚至可以索引在运行时创建的文档。