Manticore-sphinxQL GROUP BY重复的分组ID

问题描述 投票:0回答:1

[当我在Manticore中使用GROUP BY语法时,会有重复的分组ID的结果。我们刚刚从sphinx 2.X迁移到了最新的Manticore,在Sphinx中没有相同查询的问题。

这是sphinxQL查询:

SELECT model_id, model_root, model_name FROM search WHERE model_id != 0 GROUP BY model_root WITHIN GROUP ORDER BY model_level ASC ORDER BY model_level ASC, model_occurrence DESC, model_name ASC LIMIT 0, 13

因此将model_root分组,并且在-> 10,11(加农炮)处有重复的键->这不是我所期望的。

这是结果:

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

任何想法查询或索引定义有什么问题吗?

php full-text-search sphinx sphinxql manticore
1个回答
0
投票

我已转载您的问题。是的,在这种情况下,Manticore的行为有所不同,与Sphinx 2.x相比,默认的max_matches值(1000)很可能不够。在测试的情况下,您提供的max_matches = 1025应该足够了(在Sphinx 2.2中为892)。在您的生产案例中,请自己尝试最佳值。

© www.soinside.com 2019 - 2024. All rights reserved.