我正在使用Thinking Sphinx和rails 5.2.2。在最终输出中,我需要优先选择一个索引的数据,同时搜索多个索引。例如,我有一个属性为attr = foo
的索引index1
和另一个属性为attr = foo
的索引index2
。我想要的是,如果attr
与foo
(或其他值)匹配,则ThinkingSphinx.search
应始终返回index2
中的数据。如果index2
中没有attr
与foo
匹配的记录,则应返回index1
中的记录。注意:我需要对attr
上的结果进行分组
下面是我正在使用的一个查询示例。
ThinkingSphinx.search("@attr =foo|foo*", group_by: :attr, middleware: ThinkingSphinx::Middlewares::RAW_ONLY, indices: ['index1', 'index2'])
根据this documentation(搜索多个索引),应返回后面索引(本例中为index2)中的数据。但有些记录从index1
返回,有些从index2
返回。
1条答案
按热度按时间wnavrhmk1#
Sphinx没有一个直接的概念来区分一个索引与另一个索引的优先级,但是您可以向每个模型添加一个属性来指示重要性,然后按此排序。
在索引定义中:
然后搜索: