2013年10月28日 15:01:16
首先对新增的商品建立增量索引,搜索时只使用增量索引:
1 array (size=1) 2 0 => 3 array (size=6) 4 \'gid\' => string \'300233\' (length=6) 5 \'weight\' => string \'1500\' (length=4) 6 \'comweight\' => float 1 7 \'ge\' => string \'70\' (length=2) 8 \'ce\' => string \'34\' (length=2) 9 \'mysum\' => string \'104\' (length=3)
新商品的id:300233 权重: 1500
然后重建主索引,搜索时只使用主索引:
1 2 => 2 array (size=6) 3 \'gid\' => string \'300231\' (length=6) 4 \'weight\' => string \'1690\' (length=4) 5 \'comweight\' => float 1 6 \'ge\' => string \'70\' (length=2) 7 \'ce\' => string \'34\' (length=2) 8 \'mysum\' => string \'104\' (length=3) 9 3 => 10 array (size=6) 11 \'gid\' => string \'300232\' (length=6) 12 \'weight\' => string \'1690\' (length=4) 13 \'comweight\' => float 1 14 \'ge\' => string \'70\' (length=2) 15 \'ce\' => string \'34\' (length=2) 16 \'mysum\' => string \'104\' (length=3) 17 4 => 18 array (size=6) 19 \'gid\' => string \'300233\' (length=6) 20 \'weight\' => string \'1690\' (length=4) 21 \'comweight\' => float 1 22 \'ge\' => string \'70\' (length=2) 23 \'ce\' => string \'34\' (length=2) 24 \'mysum\' => string \'104\' (length=3)
此时,那个新商品(id:300233)的权重变为 1690
再然后搜索时同时使用增量索引和主索引
1 $sphObj->query($keyword, \'goods,goods_zl\'); 2 3 2 => 4 array (size=6) 5 \'gid\' => string \'300231\' (length=6) 6 \'weight\' => string \'1690\' (length=4) 7 \'comweight\' => float 1 8 \'ge\' => string \'70\' (length=2) 9 \'ce\' => string \'34\' (length=2) 10 \'mysum\' => string \'104\' (length=3) 11 3 => 12 array (size=6) 13 \'gid\' => string \'300232\' (length=6) 14 \'weight\' => string \'1690\' (length=4) 15 \'comweight\' => float 1 16 \'ge\' => string \'70\' (length=2) 17 \'ce\' => string \'34\' (length=2) 18 \'mysum\' => string \'104\' (length=3) 19 4 => 20 array (size=6) 21 \'gid\' => string \'300233\' (length=6) 22 \'weight\' => string \'1500\' (length=4) 23 \'comweight\' => float 1 24 \'ge\' => string \'70\' (length=2) 25 \'ce\' => string \'34\' (length=2) 26 \'mysum\' => string \'104\' (length=3)
此时的结果说明:增量索引中该新商品覆盖掉了主索引中的那个商品, but why!?
然后一个有意思的测试,在查询时调换下两个索引的前后顺序(第一行代码),结果:
1 $sphObj->query($keyword, \'goods_zl,goods\'); 2 3 2 => 4 array (size=6) 5 \'gid\' => string \'300231\' (length=6) 6 \'weight\' => string \'1690\' (length=4) 7 \'comweight\' => float 1 8 \'ge\' => string \'70\' (length=2) 9 \'ce\' => string \'34\' (length=2) 10 \'mysum\' => string \'104\' (length=3) 11 3 => 12 array (size=6) 13 \'gid\' => string \'300232\' (length=6) 14 \'weight\' => string \'1690\' (length=4) 15 \'comweight\' => float 1 16 \'ge\' => string \'70\' (length=2) 17 \'ce\' => string \'34\' (length=2) 18 \'mysum\' => string \'104\' (length=3) 19 4 => 20 array (size=6) 21 \'gid\' => string \'300233\' (length=6) 22 \'weight\' => string \'1690\' (length=4) 23 \'comweight\' => float 1 24 \'ge\' => string \'70\' (length=2) 25 \'ce\' => string \'34\' (length=2) 26 \'mysum\' => string \'104\' (length=3)
结论,相同的商品在主索引和增量索引中只保留一个,根据查询语句中的顺序后者索引会覆盖掉前边索引里相同的商品(或文档)
还有诡异的事情,未完待续... ...