如何配置Sitecore搜索以从搜索索引中检索自定义值

时间:2011-05-13 02:27:51

标签: search lucene sitecore

我使用AdvancedDatabaseCrawler作为搜索页面的基础。我已对其进行了配置,以便我可以搜索我想要的内容并且速度非常快。问题是,只要您想对需要访问字段值的搜索结果执行任何操作,性能就会越来越高。

主搜索结果部分很好,即使从搜索返回1000个结果我每页只显示10或20个结果,这意味着我只需要检索10或20个项目。但是在侧边栏中,我列出了各种过滤选项,其中包含与每个过滤选项(eBay样式)相关联的数字或结果。为了检索这些过滤器选项,我根据搜索结果执行关系搜索。由于搜索结果只包含SkinnyItems,因此必须在每个结果上调用GetItem()以获取实际项目以获取我正在过滤的值。换句话说,它将调用Database.GetItem(id)1000次!显然这不是非常有效。

我在这里遗漏了什么吗?有没有办法配置Sitecore搜索从搜索索引中检索自定义值?如果我可以在索引中搜索值,为什么我也无法检索它们?如果我不能,如果不从数据库中获取每个项目,我还能如何处理结果?

以下是我所关注的功能概念:http://cameras.shop.ebay.com.au/Digital-Cameras-/31388/i.html

2 个答案:

答案 0 :(得分:1)

Klaus在SDN上回答:使用Apache Solr或类似的方法进行分割。

http://sdn.sitecore.net/SDN5/Forum/ShowPost.aspx?PostID=35618

答案 1 :(得分:1)

我目前通过为搜索结果集合中过滤或返回的每个字段定义动态字段来解决此问题。这样我就可以实现所需的分面搜索,而无需从数据库中获取字段值。我假设通过添加动态字段,我们在重建索引时会遇到性能损失。但我可以忍受。

将来我们可能会考虑使用像Apache Solr这样的产品。