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