条件我想通过某种方式将它们分组,以限制结果,限制结果上或狮身人面像
这个查询应该试图让事情说清楚:
@namee(“相机”)限5 | @namee(“手机”)限制5 | @namee(“洗衣机”)限制5 | @namee(“图形卡”)限制5
其中namee是列
基本上我试图限制基于特定条件的结果/。 这可能吗?任何替代方式做我想做的事情。
我对狮身人面像2.2.9
条件我想通过某种方式将它们分组,以限制结果,限制结果上或狮身人面像
这个查询应该试图让事情说清楚:
@namee(“相机”)限5 | @namee(“手机”)限制5 | @namee(“洗衣机”)限制5 | @namee(“图形卡”)限制5
其中namee是列
基本上我试图限制基于特定条件的结果/。 这可能吗?任何替代方式做我想做的事情。
我对狮身人面像2.2.9
没有狮身人面像语法直接做到这一点。
最简单的方法就是直接在应用程序中直接进行4个单独的查询和'UNION'。性能不会太糟糕。
...如果你真的想要在狮身人面像中做到这一点,可以明确的几个技巧来完成,但它会变得非常复杂。
需要创建4个单独的索引(或最多可以满足您的条件!)。每个都有相同的数据,但是这个字段被称为不同的东西。 (他们互相重复!)你还需要在每一个属性(更多关于为什么后来)
source str1 {
sql_query = SELECT id, namee AS field1, 1 as idx FROM ...
sql_attr_unit = idx
source str2 {
sql_query = SELECT id, namee AS field2, 2 as idx FROM ...
sql_attr_unit = idx
... etc
然后创建这4个指标的单一分布式索引。
然后可以运行一个查询来获取所有结果还挺神奇地联合在一起......
MATCH('@@relaxed @field1 ("Cameras") | @field2 ("Mobiles") | @field3 ("Washing Machine") | @field4 ("Graphic Cards")')
(但@@放松是很重要的,因为场是不同的。比赛必须来自不同的索引)
我们限制他们的......因为每个关键字匹配必须来自不同的指标,每个指标都有一个唯一的属性,属性标识项匹配什么....
在狮身人面像,有一个很好的GROUP N BY
你只在g从每个属性的一定数量的结果,所以可以做...(把所有的一起)
SELECT *,WEIGHT() AS weight
FROM dist_index
WHERE MATCH('@@relaxed @field1 ("Cameras") | @field2 ("Mobiles") | @field3 ("Washing Machine") | @field4 ("Graphic Cards")')
GROUP 4 BY idx
ORDER BY weight DESC;
简单吗?
(注意,如果想从每个索引中选择4个,如果想要不同的限制要复杂得多)