0

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 が正常に動作するようにするため) ?

4

1 に答える 1

1

<< は厳密な順序演算子として使用されます。非公式の >> 構文もあると思います。

そのため、おそらく問題が発生します。あなたはそれらをエスケープしてみることができます.EscapeStringはそれらをしないと思います.

ただし、< と > が文字セット テーブルにない限り、一致することはありません。

(返事が無いという場合も要チェック$cl->getLastError()!!

于 2012-12-11T15:48:25.383 に答える