Php Manticore-sphinxQL组(按重复的分组id)
当我在Manticore中使用GROUP BY语法时,会出现分组id重复的结果。我们刚刚从sphinx 2.X迁移到最新的Manticore,而在sphinx中,相同的查询不会出现此问题 这是sphinxQL查询:Php Manticore-sphinxQL组(按重复的分组id),php,full-text-search,sphinx,sphinxql,manticore,Php,Full Text Search,Sphinx,Sphinxql,Manticore,当我在Manticore中使用GROUP BY语法时,会出现分组id重复的结果。我们刚刚从sphinx 2.X迁移到最新的Manticore,而在sphinx中,相同的查询不会出现此问题 这是sphinxQL查询: 从模型id所在的搜索中选择模型id、模型根、模型名称!=0按型号分组\u根组内订单按型号级别ASC订单按型号级别ASC,型号出现说明,型号名称ASC限制0,13 因此,对模型根进行分组,在->10,11(Cannon)->处有一个重复的键,这不是我所期望的 结果是: array:13
从模型id所在的搜索中选择模型id、模型根、模型名称!=0按型号分组\u根组内订单按型号级别ASC订单按型号级别ASC,型号出现说明,型号名称ASC限制0,13
因此,对模型根进行分组,在->10,11(Cannon)->处有一个重复的键,这不是我所期望的
结果是:
array:13 [▼
0 => array:3 [▼
"model_id" => "62763"
"model_root" => "62763"
"model_name" => "HP"
]
1 => array:3 [▼
"model_id" => "72771"
"model_root" => "72771"
"model_name" => "Sony"
]
2 => array:3 [▼
"model_id" => "72524"
"model_root" => "72524"
"model_name" => "Compaq"
]
3 => array:3 [▼
"model_id" => "62783"
"model_root" => "62783"
"model_name" => "Samsung"
]
4 => array:3 [▼
"model_id" => "62760"
"model_root" => "62760"
"model_name" => "Asus"
]
5 => array:3 [▼
"model_id" => "62761"
"model_root" => "62761"
"model_name" => "Toshiba"
]
6 => array:3 [▼
"model_id" => "85086"
"model_root" => "85086"
"model_name" => "Panasonic"
]
7 => array:3 [▼
"model_id" => "151763"
"model_root" => "151763"
"model_name" => "Acer"
]
8 => array:3 [▼
"model_id" => "72548"
"model_root" => "72548"
"model_name" => "Packard Bell"
]
9 => array:3 [▼
"model_id" => "62762"
"model_root" => "62762"
"model_name" => "Lenovo"
]
10 => array:3 [▼
"model_id" => "83072"
"model_root" => "83072"
"model_name" => "Canon"
]
11 => array:3 [▼
"model_id" => "83072"
"model_root" => "83072"
"model_name" => "Canon"
]
12 => array:3 [▼
"model_id" => "73476"
"model_root" => "73476"
"model_name" => "LG"
]
]
预期:
array:13 [▼
0 => array:3 [▼
"model_id" => "62763"
"model_root" => "62763"
"model_name" => "HP"
]
1 => array:3 [▼
"model_id" => "72771"
"model_root" => "72771"
"model_name" => "Sony"
]
2 => array:3 [▼
"model_id" => "72524"
"model_root" => "72524"
"model_name" => "Compaq"
]
3 => array:3 [▼
"model_id" => "62783"
"model_root" => "62783"
"model_name" => "Samsung"
]
4 => array:3 [▼
"model_id" => "62760"
"model_root" => "62760"
"model_name" => "Asus"
]
5 => array:3 [▼
"model_id" => "62761"
"model_root" => "62761"
"model_name" => "Toshiba"
]
6 => array:3 [▼
"model_id" => "85086"
"model_root" => "85086"
"model_name" => "Panasonic"
]
7 => array:3 [▼
"model_id" => "151763"
"model_root" => "151763"
"model_name" => "Acer"
]
8 => array:3 [▼
"model_id" => "72548"
"model_root" => "72548"
"model_name" => "Packard Bell"
]
9 => array:3 [▼
"model_id" => "62762"
"model_root" => "62762"
"model_name" => "Lenovo"
]
10 => array:3 [▼
"model_id" => "83072"
"model_root" => "83072"
"model_name" => "Canon"
]
11 => array:3 [▼
"model_id" => "73476"
"model_root" => "73476"
"model_name" => "LG"
]
12 => array:3 [▼
"model_id" => "73266"
"model_root" => "73266"
"model_name" => "Fujitsu"
]
]
这是索引定义:
index search
{
type = plain
source = search
path = /var/lib/manticore/data/search
min_word_len = 1
dict = keywords
min_prefix_len = 1
index_field_lengths = 1
charset_table = 0..9,non_cjk,-,.,/,"
}
在所需字段的源定义中:
sql_attr_uint = model_id
sql_attr_uint = model_root
sql_field_string = model_name
你知道查询或索引定义有什么问题吗?我复制了你的问题。是的,Manticore的行为在本例中有所不同,与Sphinx2.x相比,默认的max_匹配值(1000)很可能不够。在测试中,您提供的max_matches=1025应该足够了(而在Sphinx 2.2中是892)。在您的生产案例中,请自己尝试最佳价值
请在此处阅读max_matches如何影响分组结果我无法重现。请提供更多详情。如果你能缩小你的测试,并提供数据集来重现问题,那就最好了。完整配置也是必需的。总的来说,它看起来像一只虫子。请随意在Manticore的github中提交一个问题。@ManticoreSearch我已经上传了简化的测试文件: