wukong icon indicating copy to clipboard operation
wukong copied to clipboard

NumShards的大小会影响搜索结果

Open andeya opened this issue 8 years ago • 5 comments

我觉得这个是架构设计的问题,因为不同shard之间,数据不同,多个关键词同时匹配时,只是在当前shard中查找,因此,shard数会不同,检索的结果也会不同。 那么,是不是应该把shard当中分类搜索功能呢?

andeya avatar Nov 28 '15 11:11 andeya

@henrylee2cn 我还没有读透官版代码里的关系,但是有个猜测,如果有错谬请指正:不知有没有这种可能,同一关键词的文档被分片到各个shard?检索的时候没汇总各个shard的结果,如果有汇总,那么重新排序整理后的总检索结果应该是每次检索都相同的吧?NumShards和PersistentStorageShards貌似不能简单对应吧(这个疑问是对应你修改的那个版本,目前我在试用你的那个版本中)?

insionng avatar Nov 29 '15 04:11 insionng

在索引器中检索时,假如关键词的长度大于1,就只会在当前shard中查找与第2、3…关键词有交集的文档,然后再在engine的Search中进行汇总,这样子肯定是和全局数据求交集的结果不同。假如我没看错代码,应该是这个样子。 至于NumShards和PersistentStorageShards保持对应,是为了恢复数据不出错。当然,如果从两种的编号着手制定一种对应关系,也是可行的,会更好。

andeya avatar Nov 29 '15 06:11 andeya

docid会哈希到不同shard,engine返回的结果和shard数目无关,多个shard是为了提高并发度。

huichen avatar Nov 29 '15 14:11 huichen

我只知道哈希到不同shard,但是每个shard会对应一个索引器实例吧?这样每个实例保存的docid都不同,所以会出现我说的情况。

andeya avatar Nov 29 '15 15:11 andeya

恩,一个shard对应一份索引表

huichen avatar Nov 30 '15 13:11 huichen