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