这篇文章建议我们不应该使用search.ashx在Sitecore 7中进行搜索:Sitecore 7搜索-Search.ashx
然而,答案不正确,因为您不能使用ItemWebneneneba API进行搜索,它提供CRUD访问,但不能开箱即用的搜索:
如何通过项目Web API访问Sitecore Lucene搜索?
因此,我们只剩下a)在.net sitecore搜索api上滚动我们自己的搜索包装器,并连接到ItemWebneneneba api管道,或者b)绑定到内部sitecore搜索服务,并希望它不会更改(至少不会经常更改)。就我个人而言,我认为选项b更脆弱,但让我走得更快。选项a涉及更多,但会让我更多地控制我正在使用的搜索界面。然而,如果我们后退一步,Sitecore似乎应该有一个明确的最佳实践或建议,通过某种网络服务在Sitecore 7中进行搜索。如果你知道建议或有选项c,请回复。谢谢
我认为最好使用选项a)
你只需要做以下事情:
- 实现您的处理器。您需要解析luceneQuery,然后可以使用PredicateBuilder或LinqHelper来构建查询
你可以在这个博客文章中找到更多关于PredicateBuilder的信息
-
在itemWebApiRequest管道中,向
<processor type="Sitecore.ItemWebApi.Pipelines.Request.CheckParameters, Sitecore.ItemWebApi" >
添加一个新参数。类似这样的东西:<name desc="item id15">luceneQuery</name>
。 -
<processor type="Sitecore.ItemWebApi.Pipelines.Request.ResolveItems, Sitecore.ItemWebApi" />
后挂接处理器
就是这样。我希望它能有所帮助。