Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何在Sphinx中索引纯文本文件以进行搜索_Search_Sphinx_Plaintext - Fatal编程技术网

Search 如何在Sphinx中索引纯文本文件以进行搜索

Search 如何在Sphinx中索引纯文本文件以进行搜索,search,sphinx,plaintext,Search,Sphinx,Plaintext,我浏览了几十篇文章和论坛帖子,查阅了官方文档,但找不到答案。这听起来很有希望,因为is说,要索引的数据通常可以来自非常不同的来源:SQL数据库、纯文本文件、HTML文件,但不幸的是,与所有其他文章和论坛线程一样,它专门用于MySQL 听到斯芬克斯(Sphinx)如此酷,它可以做这做那,它几乎可以用任何你喜欢的数据源做任何你想做的事情,这是相当奇怪的。但是,除了MySQL以外的所有数据源示例都在哪里呢?当您想扫描世界上最简单的数据源时,只需一个最简单的Sphinx配置示例,即纯文本文件。比如说,我

我浏览了几十篇文章和论坛帖子,查阅了官方文档,但找不到答案。这听起来很有希望,因为is说,要索引的数据通常可以来自非常不同的来源:SQL数据库、纯文本文件、HTML文件,但不幸的是,与所有其他文章和论坛线程一样,它专门用于MySQL

听到斯芬克斯(Sphinx)如此酷,它可以做这做那,它几乎可以用任何你喜欢的数据源做任何你想做的事情,这是相当奇怪的。但是,除了MySQL以外的所有数据源示例都在哪里呢?当您想扫描世界上最简单的数据源时,只需一个最简单的Sphinx配置示例,即纯文本文件。比如说,我已经安装了
Sphinx
,想要(递归地)扫描我的主目录,找到所有包含“Hello world”的纯文本文件。我应该做些什么来实现这一点

先决条件

  • Ubuntu
  • sudo apt get install sphinxsearch
  • 。。。下一步是什么

在继续之前,请先查看此信息

理想情况下我会这样做

我们将使用Sphinx来索引具有文件路径的表。下面是PHP脚本,用于为特定目录(scandir)创建具有文件路径的表


创建表之后,将sphinx.conf保存在/etc/sphinxsearch/sphinx.conf中,只需运行sudo indexer filename--rotate,索引就准备好了!键入搜索,然后键入关键字以获得结果。

这太棒了!这个答案应该得到+100500分。顺便问一下,你能告诉我如何更新索引吗?我的意思是,当我们键入一个关键字时,其中一个文档可能已经更改(就sql而言,
text
字段已经更改)。如果你在更新索引时涉及到这个主题,你的答案将得到+100500^100500分=)谢谢!打开Terminal>crontab-e并设置一个cron,以便每隔…比如10分钟重新索引数据<代码>*/10****索引器文件名--旋转我从未尝试在文件上使用过。你可以试一试!
<?php
$con = mysqli_connect("localhost","root","password","database");

mysqli_query($con,"CREATE TABLE fileindex ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,text VARCHAR(100) NOT NULL);");

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$dir = scandir('/absolute/path/to/your/dir/');

foreach ($dir as $entry) {
    if (!is_dir($entry)) {
        $path= "/absolute/path/to/your/dir/$entry";
        mysqli_query($con,"INSERT INTO fileindex ( text ) VALUES ( '$path' )");
    }
}

mysqli_close($con);


?>
source src1
{

    type            = mysql
    sql_host        = localhost
    sql_user        = root
    sql_pass        = password
    sql_db          = filetest
    sql_port        = 3306  # optional, default is 3306
    sql_query_pre = SET CHARACTER_SET_RESULTS=utf8
    sql_query_pre = SET NAMES utf8
    sql_query       = SELECT id,text from fileindex
    sql_file_field = text

}

index filename
{
    source          = src1
    path            = /var/lib/sphinxsearch/data/files
    docinfo         = extern
}

indexer
{
    mem_limit   = 128M
}

searchd
{
    log                 = /var/log/sphinxsearch/searchd.log
    pid_file            = /var/log/sphinxsearch/searchd.pid
}