私はID、データ、およびデータ型を持つSphinx-Index-Tableを持っています。Group ByとGroup_ConcatでSphinxsearchを実行する方法
| sphinxid | objectid | data | type |
|----------------|----------------|----------------|-------------|
| 1 | 10 | Lorem ipsum | title |
|----------------|----------------|----------------|-------------|
| 2 | 10 | dolor si ipsum | description |
|----------------|----------------|----------------|-------------|
| 3 | 20 | dolor sit amet | date |
今、私はこの作業mysqlのクエリに類似した検索クエリを実行しよう:ここ
SELECT objectid, GROUP_CONCAT(type) AS types
FROM SphinxIndex
WHERE data LIKE '%ipsum%'
GROUP BY objectid
は私のPHPコードは、私の予想結果は何かだった
$cl = new SphinxClient();
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
$cl->SetLimits(0, 1000);
$cl->SetRankingMode(SPH_RANK_SPH04);
// THROWS ERR: can not aggregate non-scalar attribute 'datatype'
$cl->SetSelect("objectid, GROUP_CONCAT(type) AS types");
//----------------------------------------------
$cl->SetGroupBy('objectid', SPH_GROUPBY_ATTR, '@count DESC');
$cl->SetSortMode(SPH_SORT_EXTENDED, "@count DESC");
$searchresults = $cl->Query('*' . 'ipsum' . '*');
sphinxapi.phpを使用していますこのように、
| objectid | types |
|----------------|--------------------|
| 10 | title, description |
残念ながら、それはエラーがスローされます。
THROWS ERR: can not aggregate non-scalar attribute 'type'
Iは、多値帰属が問題の可能な解決策であるかもしれないことを読んで、私は実際にこれが働いているかを理解didntの。
'datatype'とは何ですか?あなたのテーブルにはデータ型はありません。 – akond
私の実際のインデックステーブルでは、その型はデータ型と呼ばれます。それを編集した – steedz