mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-15 23:25:57 +00:00
add support for Sphinx search engine
This commit is contained in:
@@ -106,6 +106,7 @@
|
||||
require_once 'version.php';
|
||||
|
||||
require_once 'lib/phpmailer/class.phpmailer.php';
|
||||
require_once 'lib/sphinxapi.php';
|
||||
|
||||
define('MAGPIE_USER_AGENT_EXT', ' (Tiny Tiny RSS/' . VERSION . ')');
|
||||
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
|
||||
@@ -3289,9 +3290,19 @@
|
||||
$ext_tables_part = "";
|
||||
|
||||
if ($search) {
|
||||
|
||||
$search_query_part = getSearchSql($search, $match_on);
|
||||
$search_query_part .= " AND ";
|
||||
|
||||
if (SPHINX_ENABLED) {
|
||||
$ids = join(",", @sphinx_search($search, 0, 500));
|
||||
|
||||
if ($ids)
|
||||
$search_query_part = "ref_id IN ($ids) AND ";
|
||||
else
|
||||
$search_query_part = "ref_id = -1 AND ";
|
||||
|
||||
} else {
|
||||
$search_query_part = getSearchSql($search, $match_on);
|
||||
$search_query_part .= " AND ";
|
||||
}
|
||||
|
||||
} else {
|
||||
$search_query_part = "";
|
||||
@@ -7123,4 +7134,33 @@
|
||||
}
|
||||
}
|
||||
|
||||
function sphinx_search($query, $offset = 0, $limit = 30) {
|
||||
$sphinxClient = new SphinxClient();
|
||||
|
||||
$sphinxClient->SetServer('localhost', 9312);
|
||||
$sphinxClient->SetConnectTimeout(1);
|
||||
|
||||
$sphinxClient->SetFieldWeights(array('title' => 70, 'content' => 30,
|
||||
'feed_title' => 20));
|
||||
|
||||
$sphinxClient->SetMatchMode(SPH_MATCH_EXTENDED2);
|
||||
$sphinxClient->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
|
||||
$sphinxClient->SetLimits($offset, $limit, 1000);
|
||||
$sphinxClient->SetArrayResult(false);
|
||||
$sphinxClient->SetFilter('owner_uid', array($_SESSION['uid']));
|
||||
|
||||
$result = $sphinxClient->Query($query, SPHINX_INDEX);
|
||||
|
||||
$ids = array();
|
||||
|
||||
if (is_array($result['matches'])) {
|
||||
foreach (array_keys($result['matches']) as $int_id) {
|
||||
$ref_id = $result['matches'][$int_id]['attrs']['ref_id'];
|
||||
array_push($ids, $ref_id);
|
||||
}
|
||||
}
|
||||
|
||||
return $ids;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user