Indexing 斯芬克斯多个来源-一个索引

Indexing 斯芬克斯多个来源-一个索引,indexing,sphinx,Indexing,Sphinx,假设我有一个包含20多个表的数据库,所有表都具有相同的模式,如何为所有表创建一个索引? 如果每个表有一个索引,那么搜索就可以正常工作。 我成功地为20个表创建了一个索引,但每次搜索都会返回第一个表的第一条记录 索引配置: index all_table_index { type = plain source = TABLE1 source = TABLE2 source = TABLE3

假设我有一个包含20多个表的数据库,所有表都具有相同的模式,如何为所有表创建一个索引? 如果每个表有一个索引,那么搜索就可以正常工作。 我成功地为20个表创建了一个索引,但每次搜索都会返回第一个表的第一条记录

索引配置:

index all_table_index
{
    type            = plain
    source          = TABLE1
    source          = TABLE2
    source          = TABLE3 
    source          = TABLE4
    source          = TABLE5
    ...
    path            = /data/sphinx/all_table_index
    #docinfo        = extern
    charset_type    = utf-8
}
另外:唯一整数字段有重复项(主ID自动递增-每个表相同!)。这是否会影响对任何其他字段的搜索? 感谢您的帮助。

>唯一整数字段有重复项(主ID自动递增-每个表相同!)

这是你的问题

文档id必须是唯一的。这就是sphinx跟踪文档的方式,因此,如果您有多个具有相同id的文档,它们将相互覆盖,您将无法区分单独的底层文档

。。。因此,您需要安排ID是唯一的

做这件事有很多方法

sourse TABLE1 {
sql_query = SELECT id*20 as id, ... from table1

sourse TABLE2 {
sql_query = SELECT (id*20)+1 as id, ... from table2

sourse TABLE3 {
sql_query = SELECT (id*20)+2 as id, ... from table3
等等。

>唯一整数字段有重复项(主ID自动递增-每个表相同!)

这是你的问题

文档id必须是唯一的。这就是sphinx跟踪文档的方式,因此,如果您有多个具有相同id的文档,它们将相互覆盖,您将无法区分单独的底层文档

。。。因此,您需要安排ID是唯一的

做这件事有很多方法

sourse TABLE1 {
sql_query = SELECT id*20 as id, ... from table1

sourse TABLE2 {
sql_query = SELECT (id*20)+1 as id, ... from table2

sourse TABLE3 {
sql_query = SELECT (id*20)+2 as id, ... from table3
等等。

通常使用此

source TABLE1 {
sql_query = SELECT CONCAT(id,01) as id, 'table1' AS source, '01' AS source_code,   ... from table1
sql_attr_string = source
sql_attr_str2ordinal = source_code
  • 01而不是1001,如果超过100个来源(但从未发生在我身上)
  • “表1”作为源文件只是为了便于了解源文件”
  • '01'作为源代码仅用于轻松筛选或分组
    • 通常使用此

      source TABLE1 {
      sql_query = SELECT CONCAT(id,01) as id, 'table1' AS source, '01' AS source_code,   ... from table1
      sql_attr_string = source
      sql_attr_str2ordinal = source_code
      
      • 01而不是1001,如果超过100个来源(但从未发生在我身上)
      • “表1”作为源文件只是为了便于了解源文件”
      • '01'作为源代码仅用于轻松筛选或分组

      我决定为每个表创建一个索引。查询将转到所有索引,我不必润色任何表上的主键,而且查询时间似乎不会受到影响。有什么评论吗?最佳实践?你也会遇到同样的问题。如果在不同的索引中有相同ID的文档,则无法获取单个文档。(除非单独查询每个索引)我决定为每个表创建一个索引。查询将转到所有索引,我不必润色任何表上的主键,而且查询时间似乎不会受到影响。有什么评论吗?最佳实践?你也会遇到同样的问题。如果在不同的索引中有相同ID的文档,则无法获取单个文档。(除非单独查询每个索引)