狮身人面像多种来源 - 一个指数

时间:2013-07-09 21:43:21

标签: indexing sphinx

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

索引conf:

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自动增量 - 每个表都相同!)。这会影响对任何其他字段的搜索吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

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

这是你的问题。

document-id必须是唯一的。它是sphinx如何跟踪文档,所以如果你有多个具有相同id的文档,它们将相互覆盖,然后你就无法将单独的底层文档放在一边。

...所以你需要安排IDS是唯一的。

有很多方法可以做到,例如

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

等...

答案 1 :(得分:1)

通常使用此

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 而不是1,001如果超过100个来源(但从未发生过我)
  • 'table1'AS来源只是为了轻松了解来源“
  • '01'AS source_code 只是为了便于过滤,或者是groupby
相关问题