我正在尝试在我的 CMS 中使用Sphinx作为站点范围的搜索。由于 CMS 中的每个模型都有不同的全文字段,因此我为每个模型创建了一个索引。但是,根据 Sphinx 的论坛,不支持搜索具有不同模式的多个索引。
你们 CMS 人员如何使用 Sphinx 进行一般网站搜索?对每个模型执行对 Sphinx 的调用并跟踪分页偏移量?使用每个模型/字段的索引字段创建一个巨大的索引?还有其他我没有想到的解决方案吗?
我正在尝试在我的 CMS 中使用Sphinx作为站点范围的搜索。由于 CMS 中的每个模型都有不同的全文字段,因此我为每个模型创建了一个索引。但是,根据 Sphinx 的论坛,不支持搜索具有不同模式的多个索引。
你们 CMS 人员如何使用 Sphinx 进行一般网站搜索?对每个模型执行对 Sphinx 的调用并跟踪分页偏移量?使用每个模型/字段的索引字段创建一个巨大的索引?还有其他我没有想到的解决方案吗?
您可能很久以前就解决了这个问题,但是...
您不能在一次调用 ->Query() 时覆盖具有不同 Schema 的多个索引,但您可以使用 AddQuery() 和 RunQueries() 执行多个查询
所以,而不是打电话
->Query( 'keywords' , ( 'schemaA', 'schemaB', 'schemaC' ) )
你做:
->AddQuery('keywords' , ( 'schemaA') );
->AddQuery('keywords' , ( 'schemaB') );
->AddQuery('keywords' , ( 'schemaC') );
->RunQueries();
您将获得一组结果,每个查询一个。然后在您的搜索结果页面中,您可以显示按“类型”(或架构)分隔的结果,例如:
___结果页面_ _ __ _ _
寻找“蓝色”...
--- 我们在汽车中找到 23 个结果 ----
--- 我们在房屋中找到 2 个结果 ----
_(结束)结果页_ __ _ _