0

命令行搜索(26019 个文档 / 26019 个命中)

search.exe --config c:\sphinx\sphinx.conf keyword

或者

search.exe --config c:\sphinx\sphinx.conf keyword -e2

PHP API(总数:1000 / 找到总数:51038)

//sphinx command line and php api

mysql_connect("localhost", "username", "password");
mysql_select_db("database");

require_once('sphinxapi.php');

$cl = new SphinxClient;
$cl->setServer("127.0.0.1", 9312); // NOT "localhost" under Windows 7!
$cl->setMatchMode(SPH_MATCH_EXTENDED2);
$cl->SetLimits(0, 20);

$result = $cl->Query("keyword");

if ($result['total'] > 0)
{
    echo 'Total: ' . $result['total'] . "<br />\n";
    echo 'Total Found: ' . $result['total_found'] . "<br />\n";
    echo '<table>';
    echo '<tr><td>ID</td><td>Date</td><td>Title</td><td>Content</td></tr>';

    foreach ($result['matches'] as $id => $otherStuff)
    {
        $row = mysql_fetch_array(mysql_query("select * from table where id = $id"));
        extract($row);

        echo "<tr><td>$id</td><td>$date</td><td>$title</td><td>$content</td></tr>";
    }
    echo '</table>';
}
else
{
    echo 'No results found';
}

匹配模式:

SPH_MATCH_ALL / SPH_MATCH_ANY / SPH_MATCH_PHRASE / SPH_MATCH_BOOLEAN / SPH_MATCH_EXTENDED / SPH_MATCH_EXTENDED2

PS:命令行结果是正确的,因为我直接从 MySQL 进行了选择,我也得到了它。

$sql = "SELECT t1.field1, t1.field2, t1.field3, t2.field4
    FROM t_table1 AS t1
    LEFT JOIN t_table2 AS t2 ON t2.id = t1.t2_id WHERE t2.field4 LIKE 'keyword'";
4

3 回答 3

0

在这里回答:

http://sphinxsearch.com/docs/manual-2.0.5.html#conf-max-matches

除非您打算在同一页面上使用 26019 匹配项,否则我建议您使用分页(如果您只显示结果)

于 2012-10-12T17:53:49.580 回答
0

忘记你找到“search.exe”。忽略它。真的。忘掉它。现在。我会等。

现在结束了,尝试具体说明您要搜索的索引(在 Query 函数调用上)

同样为您获得的每一行运行一次查询也不好。您应该只针对所有结果发出一个 SQL 查询。mysql IN() 函数使它变得容易。

示例http://www.nearby.org.uk/sphinx/search-example5-withcomments.phps

更基本但仍然有效的示例http://www.nearby.org.uk/sphinx/search-example2.phps

于 2012-10-12T16:52:47.843 回答
0

Sphinx 仅限于返回 1000 个结果。

有一些提高该限制的建议,因此请查看他们的页面。请注意,您可以将旧 sphinx 版本中的该数字更改为您想要的任何值,但它会返回 1000 作为最大值。

于 2012-10-12T16:57:01.897 回答