跟sphinx一样。只支持linux系统。
https://manual.manticoresearch.com/Server_settings/Special_suffixes
可以支持简单的PHP脚本

#!/usr/bin/php
...
<?php for ($i=1; $i<=6; $i++) { ?>
table test_<?=$i?> {
  type = rt
  path = /var/lib/manticore/data/test_<?=$i?>
  rt_field = subject
  ...
 }
 <?php } ?>
 ...

 <?php
 $confd_folder='/etc/manticore.conf.d/';
 $files = scandir($confd_folder);
 foreach($files as $file)
 {
         if(($file == '.') || ($file =='..'))
         {} else {
                 $fp = new SplFileInfo($confd_folder.$file);
                 if('conf' == $fp->getExtension()){
                         include ($confd_folder.$file);
                 }
         }
 }
 ?>

如果查询语句返回结果太多的话,几千万,会出现lost connction的情况。

解决办法,分次查询:

其中uid是自增ID
source 索引名 : 数据库名{
        sql_query_range = SELECT MIN(uid),MAX(uid) FROM 表名
        sql_range_step = 1000
        sql_query = SELECT *,53 AS table_id FROM 表名 WHERE uid>=$start AND uid<=$end
        sql_attr_uint           = table_id
}

经过测试改成1000就可以了。

参考官方的安装方法。直接apt install.

Ubuntu如下:其他系统自查。https://manual.manticoresearch.com/Installation/Debian_and_Ubuntu#Supported-releases:

wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo dpkg -i manticore-repo.noarch.deb
sudo apt update

sudo apt install manticore manticore-extra

安装完了之后无法连接MYSQL。
报错:MySQL source wasn’t initialized. Wrong name in dlopen?
搜了下:
https://manticoresearch.com/blog/mysql-source-wasnt-initialized-wrong-name-in-dlopen/
直接

apt install default-libmysqlclient-dev

安装完之后,好像还是报错,这次报错,连接mysql的sock文件不对,直接改my.cnf:

#socket = /tmp/mysql.sock
socket = /var/run/mysqld/mysqld.sock

这下可以了。

另外就是manticore的conf不支持include语法,如果索引多的话,会很长很长,几千行。
后来发现其实是支持的,参见https://kele.im/index.php/archives/318/

从WINDOWS迁移数据库文件到LINUX,在phpmyadmin管理的时候,提示“使用中”

原因是,数据文件扩展名大小写的问题。
myi => MYI
myd => MYD
即可

#!/bin/bash

read -p "请输入要更改的文件扩展名(小写): " old_extension
read -p "请输入目标文件扩展名(大写): " new_extension

for file in *.$old_extension; do
    if [ -e "$file" ]; then
        new_file=$(echo "$file" | sed "s/\.$old_extension$/\.$new_extension/")
        mv "$file" "$new_file"
        echo "已将 $file 重命名为 $new_file"
    else
        echo "没有找到符合条件的文件."
    fi
done

echo "扩展名更改完成!"