我还没有深入了解 SDL Tridion 在其内部搜索引擎 (SOLR) 中存储数据的内容和方式的详细信息,但我需要构建一个 GUI 扩展,该扩展需要跨出版物对组件/元数据字段执行搜索。
我看不出有任何理由不研究 SOLR,但在我投入时间之前,有没有人知道为什么这是一个坏主意?
提前致谢!
我还没有深入了解 SDL Tridion 在其内部搜索引擎 (SOLR) 中存储数据的内容和方式的详细信息,但我需要构建一个 GUI 扩展,该扩展需要跨出版物对组件/元数据字段执行搜索。
我看不出有任何理由不研究 SOLR,但在我投入时间之前,有没有人知道为什么这是一个坏主意?
提前致谢!
一般来说,绕过 API 直接查询 SOLR 是个坏主意。从你的问题来看,我认为没有理由这样做。
您是否需要索引比 Tridion 已索引的数据更多的数据?如果没有,您肯定可以使用 API 进行搜索吗?
如果这样做,您可以考虑为附加数据实现自定义搜索索引处理程序。尽管目前没有很好的文档记录,但创建起来似乎相当简单(实现 ISearchIndexingHandler 并更新您的 CM 和 SOLR 配置)。好处是您的数据也可以使用标准的 Tridion 搜索来搜索。
这实际上取决于您的搜索要求。如果只是简单的搜索 - 那么它可能没问题,但如果您想进行一些 Tridion 特定的搜索,那么这将非常困难,因为 SDL Tridion 会对 SOLR 结果进行大量后处理。为什么不能只使用 CoreService 并有一个方便的支持搜索界面?
正如 Peter 所说,与 Tridion 附带的 SOLR 交互确实是个坏主意。Tridion 有一个抽象层来隐藏 SOLR 查询的复杂性。例如 tridion 隐藏搜索关键字的大小写敏感性。
我强烈建议使用 tridion search api 来构建你的界面。Tridion search api 也支持直接执行 solr 查询。但它不推荐。
对于索引附加数据,你可以实现 ISearchIndexingHandler。solr 配置文件(添加新字段)有一些复杂性。