coreseek/sphinx 如何对多个索引进行综合搜索

时间:2023-01-28 08:45:43
穷的一分也没有了,都散光光了。只能发到水区了。
==========================================
我有二个索引,一个问答,一个新闻
我要如何对这二个索引进行综合检索,
$cl-query(keyword,"ask,news")这样的话,重复的id,后面的索引会覆盖前面的索引,因为这二个索引来自不同的表,二个表里的id都是从1开始的,所以有重复id

谁给个解决方案.

17 个解决方案

#1


坐等................

#2


coreseek/sphinx 如何对多个索引进行综合搜索自占沙发

#3


coreseek/sphinx 如何对多个索引进行综合搜索擦,表情还发错

#4


3连下吧~~

#5


楼上的你的技术分那么高,给个方案啊,别光灌水了。

#6


我技术分哪里高了?我那是水分啊,你说的这个我不会啊
不能在ID上加个别的东西标识一下么?

引用 5 楼 jykgps 的回复:
楼上的你的技术分那么高,给个方案啊,别光灌水了。

#7


而且你这两种东西也不应该掺到一起啊,不是事先有分类了么

#8


引用 6 楼 kkkksunday 的回复:
我技术分哪里高了?我那是水分啊,你说的这个我不会啊
不能在ID上加个别的东西标识一下么?

Quote: 引用 5 楼 jykgps 的回复:

楼上的你的技术分那么高,给个方案啊,别光灌水了。


sphinx手册中说的:
===============================
$cl->Query ( "test query", "main delta" );
$cl->Query ( "test query", "main;delta" );
$cl->Query ( "test query", "main, delta" );

给出多个索引时的顺序是有意义的。如果同一个文档ID的文档在多个索引中找到,那么权值和属性值会取最后一个索引中所存储的作为该文档ID的权值和属性值,用于排序、过滤,并返回给客户端(除非用SetIndexWeights()显式改变默认行为)。因此在上述示例中,索引“delta”中的匹配项总是比索引“main”中的更优先。 
=====================================
不行,sphinx中的建立索引的id必须是int型的,
 不过好像可以用id*10000这种方法来防止重复,具体没试过,不知道有没有其他方法。

#9


引用 7 楼 kkkksunday 的回复:
而且你这两种东西也不应该掺到一起啊,不是事先有分类了么


有分类,但也有个”综合“ 综合的就是把问答,新闻,还有其他类型的内容全部糅合到一起的结果。

#10


既然能id*10000,那么就应该能id+10000,加上第一个取出来数据的个数,不就可以防止重复了么

#11


不过你这个揉合到一起,会按照类型分段啊,还不如存两个然后重新排下序

#12


给id加数值虽说是一个方法,但也太麻烦了。建立索引时得加,取数据时还得重新减。

#13


不能一次都取出来么?多个表union不行么?

#14


库也不在一个里面,而且表结构是不一样的,还有个方法是建立一个整合的表,把所有数据都存到里面。做为综合搜索的sphinx数据源。
不过都好麻烦啊。

#15


引用 14 楼 jykgps 的回复:
库也不在一个里面,而且表结构是不一样的,还有个方法是建立一个整合的表,把所有数据都存到里面。做为综合搜索的sphinx数据源。
不过都好麻烦啊。
那就比较麻烦啦

#16


楼主的解决方案是怎样的? coreseek/sphinx 如何对多个索引进行综合搜索

#17


分别查询,把查询后的结果先去匹配文章,然后再把返回的文章中合起来,合并的可以自己定义下。

#1


坐等................

#2


coreseek/sphinx 如何对多个索引进行综合搜索自占沙发

#3


coreseek/sphinx 如何对多个索引进行综合搜索擦,表情还发错

#4


3连下吧~~

#5


楼上的你的技术分那么高,给个方案啊,别光灌水了。

#6


我技术分哪里高了?我那是水分啊,你说的这个我不会啊
不能在ID上加个别的东西标识一下么?

引用 5 楼 jykgps 的回复:
楼上的你的技术分那么高,给个方案啊,别光灌水了。

#7


而且你这两种东西也不应该掺到一起啊,不是事先有分类了么

#8


引用 6 楼 kkkksunday 的回复:
我技术分哪里高了?我那是水分啊,你说的这个我不会啊
不能在ID上加个别的东西标识一下么?

Quote: 引用 5 楼 jykgps 的回复:

楼上的你的技术分那么高,给个方案啊,别光灌水了。


sphinx手册中说的:
===============================
$cl->Query ( "test query", "main delta" );
$cl->Query ( "test query", "main;delta" );
$cl->Query ( "test query", "main, delta" );

给出多个索引时的顺序是有意义的。如果同一个文档ID的文档在多个索引中找到,那么权值和属性值会取最后一个索引中所存储的作为该文档ID的权值和属性值,用于排序、过滤,并返回给客户端(除非用SetIndexWeights()显式改变默认行为)。因此在上述示例中,索引“delta”中的匹配项总是比索引“main”中的更优先。 
=====================================
不行,sphinx中的建立索引的id必须是int型的,
 不过好像可以用id*10000这种方法来防止重复,具体没试过,不知道有没有其他方法。

#9


引用 7 楼 kkkksunday 的回复:
而且你这两种东西也不应该掺到一起啊,不是事先有分类了么


有分类,但也有个”综合“ 综合的就是把问答,新闻,还有其他类型的内容全部糅合到一起的结果。

#10


既然能id*10000,那么就应该能id+10000,加上第一个取出来数据的个数,不就可以防止重复了么

#11


不过你这个揉合到一起,会按照类型分段啊,还不如存两个然后重新排下序

#12


给id加数值虽说是一个方法,但也太麻烦了。建立索引时得加,取数据时还得重新减。

#13


不能一次都取出来么?多个表union不行么?

#14


库也不在一个里面,而且表结构是不一样的,还有个方法是建立一个整合的表,把所有数据都存到里面。做为综合搜索的sphinx数据源。
不过都好麻烦啊。

#15


引用 14 楼 jykgps 的回复:
库也不在一个里面,而且表结构是不一样的,还有个方法是建立一个整合的表,把所有数据都存到里面。做为综合搜索的sphinx数据源。
不过都好麻烦啊。
那就比较麻烦啦

#16


楼主的解决方案是怎样的? coreseek/sphinx 如何对多个索引进行综合搜索

#17


分别查询,把查询后的结果先去匹配文章,然后再把返回的文章中合起来,合并的可以自己定义下。