搜索失败多个<或者>在Sphinx 0.9.9

时间:2012-12-10 12:45:41

标签: php mysql search-engine sphinx

Sphinx 0.9.9 已配置为使用 MySql
我最近注意到Sphinx不适用于包含任何多次出现< > 字符的搜索字词。

正在运行的PHP代码:

// Initialize SphinxClient class object
$cl = new SphinxClient ();
// Set the server and port
$cl->SetServer ( "127.0.0.1", 9313 );

// Initialize prefixed query
$query_prefix = '';
// Set the limit
$cl->SetLimits((int)$offset, (int)$count);
// Set the match mode
$cl->setMatchMode(SPH_MATCH_EXTENDED);
// Set the ranking mode
$cl->setRankingMode(SPH_RANK_WORDCOUNT);
// Set sorting
$cl->SetSortMode(SPH_SORT_EXTENDED,'@relevance DESC, updated_date DESC' );

$query_main = '@(name,description)';

// Initialize the search index
$search_index = 'index_common';

$search_text = $cl->EscapeString($search_text);

// Run the search query
$resp = $cl->Query($query_prefix . '('. $query_main . '"^' . $search_text . '$" | "' . 
    $search_text . '" | (' . $search_text . ') | "' 
    . $search_text . '"/1 | (' . $search_text_wild . ')) ' ,$search_index);

如果我输入的搜索字词如“>> ”而没有引号,则会生成以下查询:

(@(name,description)"^>>$" | ">>" | (>>) | ">>"/1 | (*>>*))

并且没有给出任何响应,例如在系统中找不到搜索词。这种情况发生在< > 多次出现,而不是单身。

这是 Sphinx 中的已知问题,还是有办法克服(让Sphinx在这些特殊情况下正常工作)?

1 个答案:

答案 0 :(得分:1)

<<用作严格的订单操作符 - 我认为还有非官方的>>句法。

这可能会导致问题。你可以尝试逃避它们,我猜EscapeString不会这样做。

但要记住,除非<和>在你的charset表中他们永远无法匹配。

(当你说没有回应时,请务必查看$cl->getLastError() !!