Skip to content

Commit

Permalink
Merge branch 'field_order' into 'master'
Browse files Browse the repository at this point in the history
Keep original attr/field order

See merge request manticoresearch/dev!400
  • Loading branch information
glookka committed May 5, 2023
2 parents ced679a + 9822955 commit f3cc097
Show file tree
Hide file tree
Showing 24 changed files with 178 additions and 144 deletions.
2 changes: 2 additions & 0 deletions src/schema/helper.h
Expand Up @@ -19,6 +19,8 @@ class CSphSchemaHelper : public ISphSchema
{
public:
void FreeDataPtrs ( CSphMatch & tMatch ) const final;
int GetAttrIndexOriginal ( const char * szName ) const { return GetAttrIndex(szName); }

void CloneMatch ( CSphMatch & tDst, const CSphMatch & rhs ) const final;

/// clone all raw attrs and only specified ptrs
Expand Down
3 changes: 3 additions & 0 deletions src/schema/ischema.h
Expand Up @@ -69,6 +69,9 @@ class ISphSchema
/// free all allocated attibures. Does NOT free m_pDynamic of match itself!
virtual void FreeDataPtrs ( CSphMatch & tMatch ) const = 0;

/// return original attribute id (for compound schemas)
virtual int GetAttrIndexOriginal ( const char * szName ) const = 0;

/// simple copy; clones either the entire dynamic part, or a part thereof
virtual void CloneMatch ( CSphMatch & tDst, const CSphMatch & rhs ) const = 0;

Expand Down
7 changes: 6 additions & 1 deletion src/schema/rset.cpp
Expand Up @@ -92,6 +92,12 @@ int CSphRsetSchema::GetAttrIndex ( const char* sName ) const
}


int CSphRsetSchema::GetAttrIndexOriginal ( const char * szName ) const
{
return m_pIndexSchema->GetAttrIndex ( szName );
}


int CSphRsetSchema::GetFieldIndex ( const char * szName ) const
{
if ( !m_pIndexSchema )
Expand Down Expand Up @@ -204,7 +210,6 @@ CSphRsetSchema::CSphRsetSchema ( const CSphRsetSchema& rhs )
m_dRemoved = rhs.m_dRemoved;
}


void CSphRsetSchema::RemoveStaticAttr ( int iAttr )
{
assert ( m_pIndexSchema );
Expand Down
1 change: 1 addition & 0 deletions src/schema/rset.h
Expand Up @@ -50,6 +50,7 @@ class CSphRsetSchema: public CSphSchemaHelper
int GetAttrsCount() const final;
int GetFieldsCount() const final;
int GetAttrIndex ( const char* sName ) const final;
int GetAttrIndexOriginal ( const char * szName ) const final;
int GetFieldIndex ( const char* sName ) const final;
const CSphColumnInfo & GetField ( int iIndex ) const final;
const CSphColumnInfo * GetField ( const char * szName ) const final;
Expand Down
58 changes: 56 additions & 2 deletions src/searchd.cpp
Expand Up @@ -3881,6 +3881,55 @@ bool GetItemsLeftInSchema ( const ISphSchema & tSchema, bool bOnlyPlain, const C
}


struct AttrSort_fn
{
const ISphSchema & m_tSchema;

AttrSort_fn ( const ISphSchema & tSchema )
: m_tSchema ( tSchema )
{}

bool IsLess ( int iA, int iB ) const
{
const auto & sNameA = m_tSchema.GetAttr(iA).m_sName;
const auto & sNameB = m_tSchema.GetAttr(iB).m_sName;
bool bDocIdA = sNameA==sphGetDocidName();
bool bDocIdB = sNameB==sphGetDocidName();
if ( bDocIdA || bDocIdB )
return bDocIdA || !bDocIdB;

bool bBlobLocA = sNameA==sphGetBlobLocatorName();
bool bBlobLocB = sNameB==sphGetBlobLocatorName();
if ( bBlobLocA ||bBlobLocB )
return bBlobLocA || !bBlobLocB;

bool bFieldA = !!m_tSchema.GetField ( sNameA.cstr() );
bool bFieldB = !!m_tSchema.GetField ( sNameB.cstr() );
if ( bFieldA || bFieldB )
{
if ( bFieldA && bFieldB )
{
int iFieldIdA = m_tSchema.GetFieldIndex ( sNameA.cstr() );
int iFieldIdB = m_tSchema.GetFieldIndex ( sNameB.cstr() );
return iFieldIdA < iFieldIdB;
}

return bFieldA || !bFieldB;
}

int iIndexA = m_tSchema.GetAttr(iA).m_iIndex;
int iIndexB = m_tSchema.GetAttr(iB).m_iIndex;
if ( iIndexA==-1 )
iIndexA = iA;

if ( iIndexB==-1 )
iIndexB = iB;

return iIndexA < iIndexB;
}
};


void DoExpansion ( const ISphSchema & tSchema, const CSphVector<int> & dAttrsInSchema, const CSphVector<CSphQueryItem> & dItems, CSphVector<CSphQueryItem> & dExpanded )
{
bool bExpandedAsterisk = false;
Expand All @@ -3893,7 +3942,10 @@ void DoExpansion ( const ISphSchema & tSchema, const CSphVector<int> & dAttrsInS

bExpandedAsterisk = true;

for ( auto iAttr : dAttrsInSchema )
IntVec_t dSortedAttrsInSchema = dAttrsInSchema;
dSortedAttrsInSchema.Sort ( AttrSort_fn(tSchema) );

for ( auto iAttr : dSortedAttrsInSchema )
{
const CSphColumnInfo & tCol = tSchema.GetAttr(iAttr);
CSphQueryItem & tExpanded = dExpanded.Add();
Expand Down Expand Up @@ -4741,7 +4793,9 @@ void FrontendSchemaBuilder_c::Finalize()
tFrontend.m_tLocator = s.m_tLocator;
tFrontend.m_eAttrType = s.m_eAttrType;
tFrontend.m_eAggrFunc = s.m_eAggrFunc; // for a sort loop just below
tFrontend.m_iIndex = i; // to make the aggr sort loop just below stable
if ( !m_bAgent )
tFrontend.m_iIndex = i; // to make the aggr sort loop just below stable

tFrontend.m_uFieldFlags = s.m_uFieldFlags;
}

Expand Down
4 changes: 4 additions & 0 deletions src/sphinxsort.cpp
Expand Up @@ -135,6 +135,9 @@ void TransformedSchemaBuilder_c::AddAttr ( const CSphString & sName )
CSphColumnInfo tAttr = *pAttr;
tAttr.m_tLocator.Reset();

if ( tAttr.m_iIndex==-1 )
tAttr.m_iIndex = m_tOldSchema.GetAttrIndexOriginal ( tAttr.m_sName.cstr() );

// check if new columnar attributes were added (that were not in the select list originally)
if ( tAttr.IsColumnar() )
ReplaceColumnarAttrWithExpression ( tAttr, m_tNewSchema.GetAttrsCount() );
Expand Down Expand Up @@ -6146,6 +6149,7 @@ bool QueueCreator_c::ParseQueryItem ( const CSphQueryItem & tItem )
m_bZonespanlist |= bHasZonespanlist;
m_bExprsNeedDocids |= bExprsNeedDocids;
tExprCol.m_eAggrFunc = tItem.m_eAggrFunc;
tExprCol.m_iIndex = iSorterAttr>= 0 ? m_pSorterSchema->GetAttrIndexOriginal ( tItem.m_sAlias.cstr() ) : -1;
if ( !tExprCol.m_pExpr )
return Err ( "parse error: %s", m_sError.cstr() );

Expand Down
34 changes: 0 additions & 34 deletions test/helpers.inc
Expand Up @@ -924,40 +924,6 @@ function JsonRsetFixup ( &$set, $columnar, $keep_json_ctrls )
$entry["Properties"] = RemoveColumnarProperty ( $entry["Properties"] );
}
}

if ( isset ( $row["data"] ) && is_array($row["data"]) )
{
foreach ( $row["data"] as &$data_row )
ksort($data_row);
}

if ( isset ( $row["columns"] ) && is_array($row["columns"]) )
usort ( $row["columns"], "CompareColumns" );
}

$set["rows"] = $keep_json_ctrls ? $json_handler->Encode ( $rows ) : json_encode ( $rows );
}

if ( isset ( $set["http_endpoint"] ) && $set["http_endpoint"]=="cli_json" )
{
if ( $keep_json_ctrls )
{
$json_handler = new SafeJsonHandler();
$rows = $json_handler->Decode ( $set["rows"], 1, 512, JSON_BIGINT_AS_STRING );
}
else
$rows = json_decode ( $set["rows"], 1, 512, JSON_BIGINT_AS_STRING );

foreach ( $rows as &$row )
{
if ( isset ( $row["data"] ) && is_array($row["data"]) )
{
foreach ( $row["data"] as &$data_row )
ksort($data_row);
}

if ( isset ( $row["columns"] ) && is_array($row["columns"]) )
usort($row["columns"], function($a, $b) { return strcmp ( key($a), key($b) ); } );
}

$set["rows"] = $keep_json_ctrls ? $json_handler->Encode ( $rows ) : json_encode ( $rows );
Expand Down
2 changes: 1 addition & 1 deletion test/test_182/model.bin
@@ -1 +1 @@
a:2:{i:0;a:1:{i:0;a:11:{i:0;s:47:"stop=ok, return code=0; start=ok, return code=0";i:1;s:18:"1; 1; 1,2; test1; ";i:2;s:29:"2; 1; 1002,1023,4456; test2; ";i:3;s:29:"3; 1; 1003,1008,1010; test3; ";i:4;s:29:"4; 1; 1004,1005,1006; test4; ";i:5;s:7:"up.ok=2";i:6;s:47:"stop=ok, return code=0; start=ok, return code=0";i:7;s:20:"1; 1; 2,3,4; test1; ";i:8;s:29:"2; 1; 1002,1023,4456; test2; ";i:9;s:20:"3; 1; 6,7,8; test3; ";i:10;s:29:"4; 1; 1004,1005,1006; test4; ";}}i:1;a:1:{i:0;a:11:{i:0;s:47:"stop=ok, return code=0; start=ok, return code=0";i:1;s:18:"1; 1; 1,2; test1; ";i:2;s:29:"2; 1; 1002,1023,4456; test2; ";i:3;s:29:"3; 1; 1003,1008,1010; test3; ";i:4;s:29:"4; 1; 1004,1005,1006; test4; ";i:5;s:7:"up.ok=2";i:6;s:47:"stop=ok, return code=0; start=ok, return code=0";i:7;s:20:"1; 1; 2,3,4; test1; ";i:8;s:29:"2; 1; 1002,1023,4456; test2; ";i:9;s:20:"3; 1; 6,7,8; test3; ";i:10;s:29:"4; 1; 1004,1005,1006; test4; ";}}}
a:2:{i:0;a:1:{i:0;a:11:{i:0;s:47:"stop=ok, return code=0; start=ok, return code=0";i:1;s:18:"1; test1; 1; 1,2; ";i:2;s:29:"2; test2; 1; 1002,1023,4456; ";i:3;s:29:"3; test3; 1; 1003,1008,1010; ";i:4;s:29:"4; test4; 1; 1004,1005,1006; ";i:5;s:7:"up.ok=2";i:6;s:47:"stop=ok, return code=0; start=ok, return code=0";i:7;s:20:"1; test1; 1; 2,3,4; ";i:8;s:29:"2; test2; 1; 1002,1023,4456; ";i:9;s:20:"3; test3; 1; 6,7,8; ";i:10;s:29:"4; test4; 1; 1004,1005,1006; ";}}i:1;a:1:{i:0;a:11:{i:0;s:47:"stop=ok, return code=0; start=ok, return code=0";i:1;s:18:"1; test1; 1; 1,2; ";i:2;s:29:"2; test2; 1; 1002,1023,4456; ";i:3;s:29:"3; test3; 1; 1003,1008,1010; ";i:4;s:29:"4; test4; 1; 1004,1005,1006; ";i:5;s:7:"up.ok=2";i:6;s:47:"stop=ok, return code=0; start=ok, return code=0";i:7;s:20:"1; test1; 1; 2,3,4; ";i:8;s:29:"2; test2; 1; 1002,1023,4456; ";i:9;s:20:"3; test3; 1; 6,7,8; ";i:10;s:29:"4; test4; 1; 1004,1005,1006; ";}}}
1 change: 0 additions & 1 deletion test/test_182/test.xml
Expand Up @@ -5,7 +5,6 @@

<requires>
<non-rt/>
<non-windows/>
</requires>

<config>
Expand Down
2 changes: 1 addition & 1 deletion test/test_188/model.bin
@@ -1 +1 @@
a:1:{i:0;a:1:{i:0;a:21:{i:0;s:42:"CALL KEYWORDS ( 'apple', 'plain_stem', 1 )";i:1;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 1 hits = 1 ";i:2;s:39:"CALL KEYWORDS ( 'apple', 'rt_stem', 1 )";i:3;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 0 hits = 0 ";i:4;s:42:"ATTACH INDEX plain_stem TO RTINDEX rt_stem";i:5;s:37:"UPDATE rt_stem SET gid=111 WHERE id=1";i:6;s:24:"SELECT * FROM plain_stem";i:7;s:59:"1064; unknown local table(s) 'plain_stem' in search request";i:8;s:24:"SELECT * FROM plain_stem";i:9;s:59:"1064; unknown local table(s) 'plain_stem' in search request";i:10;s:10:"started=ok";i:11;s:39:"CALL KEYWORDS ( 'apple', 'rt_stem', 1 )";i:12;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 1 hits = 1 ";i:13;s:21:"SELECT * FROM rt_stem";i:14;s:31:"id = 1 gid = 111 title = apple ";i:15;s:30:"DELETE FROM rt_stem WHERE id=1";i:16;s:21:"SELECT * FROM rt_stem";i:17;s:24:"TRUNCATE RTINDEX rt_stem";i:18;s:42:"ATTACH INDEX plain_stem TO RTINDEX rt_stem";i:19;s:21:"SELECT * FROM rt_stem";i:20;s:30:"id = 1 gid = 11 title = apple ";}}}
a:1:{i:0;a:1:{i:0;a:21:{i:0;s:42:"CALL KEYWORDS ( 'apple', 'plain_stem', 1 )";i:1;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 1 hits = 1 ";i:2;s:39:"CALL KEYWORDS ( 'apple', 'rt_stem', 1 )";i:3;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 0 hits = 0 ";i:4;s:42:"ATTACH INDEX plain_stem TO RTINDEX rt_stem";i:5;s:37:"UPDATE rt_stem SET gid=111 WHERE id=1";i:6;s:24:"SELECT * FROM plain_stem";i:7;s:59:"1064; unknown local table(s) 'plain_stem' in search request";i:8;s:24:"SELECT * FROM plain_stem";i:9;s:59:"1064; unknown local table(s) 'plain_stem' in search request";i:10;s:10:"started=ok";i:11;s:39:"CALL KEYWORDS ( 'apple', 'rt_stem', 1 )";i:12;s:63:"qpos = 1 tokenized = apple normalized = appl docs = 1 hits = 1 ";i:13;s:21:"SELECT * FROM rt_stem";i:14;s:31:"id = 1 title = apple gid = 111 ";i:15;s:30:"DELETE FROM rt_stem WHERE id=1";i:16;s:21:"SELECT * FROM rt_stem";i:17;s:24:"TRUNCATE RTINDEX rt_stem";i:18;s:42:"ATTACH INDEX plain_stem TO RTINDEX rt_stem";i:19;s:21:"SELECT * FROM rt_stem";i:20;s:30:"id = 1 title = apple gid = 11 ";}}}
2 changes: 1 addition & 1 deletion test/test_199/model.bin
@@ -1 +1 @@
a:1:{i:0;a:1:{i:0;a:99:{i:0;s:79:" insert into rt1 values(1,'this is the test', 11), (2,'this is thes test', 22) ";i:1;s:79:" insert into rt2 values(1,'this is the test', 11), (2,'this is thes test', 22) ";i:2;s:47:"SELECT * FROM rt1 WHERE MATCH ( 'the test' );";i:3;s:40:"id = 1 idd = 11 text = this is the test ";i:4;s:41:"id = 2 idd = 22 text = this is thes test ";i:5;s:9:"SHOW META";i:6;s:9:"total = 2";i:7;s:15:"total_found = 2";i:8;s:19:"total_relation = eq";i:9;s:17:"keyword[0] = test";i:10;s:11:"docs[0] = 2";i:11;s:11:"hits[0] = 2";i:12;s:47:"SELECT * FROM rt2 WHERE MATCH ( 'the test' );";i:13;s:40:"id = 1 idd = 11 text = this is the test ";i:14;s:41:"id = 2 idd = 22 text = this is thes test ";i:15;s:9:"SHOW META";i:16;s:9:"total = 2";i:17;s:15:"total_found = 2";i:18;s:19:"total_relation = eq";i:19;s:17:"keyword[0] = test";i:20;s:11:"docs[0] = 2";i:21;s:11:"hits[0] = 2";i:22;s:46:"SELECT * FROM i1 WHERE MATCH ( 'the test' );";i:23;s:40:"id = 1 idd = 11 text = this is the test ";i:24;s:41:"id = 2 idd = 22 text = this is thes test ";i:25;s:9:"SHOW META";i:26;s:9:"total = 2";i:27;s:15:"total_found = 2";i:28;s:19:"total_relation = eq";i:29;s:17:"keyword[0] = test";i:30;s:11:"docs[0] = 2";i:31;s:11:"hits[0] = 2";i:32;s:46:"SELECT * FROM i2 WHERE MATCH ( 'the test' );";i:33;s:40:"id = 1 idd = 11 text = this is the test ";i:34;s:41:"id = 2 idd = 22 text = this is thes test ";i:35;s:9:"SHOW META";i:36;s:9:"total = 2";i:37;s:15:"total_found = 2";i:38;s:19:"total_relation = eq";i:39;s:17:"keyword[0] = test";i:40;s:11:"docs[0] = 2";i:41;s:11:"hits[0] = 2";i:42;s:29:"SET GLOBAL @filter1 = ( 101 )";i:43;s:39:"SELECT * FROM idx WHERE idd IN @filter1";i:44;s:30:"id = 1 idd = 101 text = test1 ";i:45;s:9:"SHOW META";i:46;s:9:"total = 1";i:47;s:15:"total_found = 1";i:48;s:19:"total_relation = eq";i:49;s:33:"SET GLOBAL @filter1 = ( 22, 102 )";i:50;s:10:"started=ok";i:51;s:39:"SELECT * FROM idx WHERE idd IN @filter1";i:52;s:30:"id = 2 idd = 102 text = test2 ";i:53;s:9:"SHOW META";i:54;s:9:"total = 1";i:55;s:15:"total_found = 1";i:56;s:19:"total_relation = eq";i:57;s:33:"SET GLOBAL @filter1 = ( 22, 103 )";i:58;s:10:"started=ok";i:59;s:47:"SELECT * FROM rt1 WHERE MATCH ( 'the test' );";i:60;s:40:"id = 1 idd = 11 text = this is the test ";i:61;s:41:"id = 2 idd = 22 text = this is thes test ";i:62;s:9:"SHOW META";i:63;s:9:"total = 2";i:64;s:15:"total_found = 2";i:65;s:19:"total_relation = eq";i:66;s:17:"keyword[0] = test";i:67;s:11:"docs[0] = 2";i:68;s:11:"hits[0] = 2";i:69;s:47:"SELECT * FROM rt2 WHERE MATCH ( 'the test' );";i:70;s:40:"id = 1 idd = 11 text = this is the test ";i:71;s:41:"id = 2 idd = 22 text = this is thes test ";i:72;s:9:"SHOW META";i:73;s:9:"total = 2";i:74;s:15:"total_found = 2";i:75;s:19:"total_relation = eq";i:76;s:17:"keyword[0] = test";i:77;s:11:"docs[0] = 2";i:78;s:11:"hits[0] = 2";i:79;s:46:"SELECT * FROM i1 WHERE MATCH ( 'the test' );";i:80;s:40:"id = 1 idd = 11 text = this is the test ";i:81;s:41:"id = 2 idd = 22 text = this is thes test ";i:82;s:9:"SHOW META";i:83;s:9:"total = 2";i:84;s:15:"total_found = 2";i:85;s:19:"total_relation = eq";i:86;s:17:"keyword[0] = test";i:87;s:11:"docs[0] = 2";i:88;s:11:"hits[0] = 2";i:89;s:46:"SELECT * FROM i2 WHERE MATCH ( 'the test' );";i:90;s:40:"id = 1 idd = 11 text = this is the test ";i:91;s:41:"id = 2 idd = 22 text = this is thes test ";i:92;s:9:"SHOW META";i:93;s:9:"total = 2";i:94;s:15:"total_found = 2";i:95;s:19:"total_relation = eq";i:96;s:17:"keyword[0] = test";i:97;s:11:"docs[0] = 2";i:98;s:11:"hits[0] = 2";}}}
a:1:{i:0;a:1:{i:0;a:99:{i:0;s:79:" insert into rt1 values(1,'this is the test', 11), (2,'this is thes test', 22) ";i:1;s:79:" insert into rt2 values(1,'this is the test', 11), (2,'this is thes test', 22) ";i:2;s:47:"SELECT * FROM rt1 WHERE MATCH ( 'the test' );";i:3;s:40:"id = 1 text = this is the test idd = 11 ";i:4;s:41:"id = 2 text = this is thes test idd = 22 ";i:5;s:9:"SHOW META";i:6;s:9:"total = 2";i:7;s:15:"total_found = 2";i:8;s:19:"total_relation = eq";i:9;s:17:"keyword[0] = test";i:10;s:11:"docs[0] = 2";i:11;s:11:"hits[0] = 2";i:12;s:47:"SELECT * FROM rt2 WHERE MATCH ( 'the test' );";i:13;s:40:"id = 1 text = this is the test idd = 11 ";i:14;s:41:"id = 2 text = this is thes test idd = 22 ";i:15;s:9:"SHOW META";i:16;s:9:"total = 2";i:17;s:15:"total_found = 2";i:18;s:19:"total_relation = eq";i:19;s:17:"keyword[0] = test";i:20;s:11:"docs[0] = 2";i:21;s:11:"hits[0] = 2";i:22;s:46:"SELECT * FROM i1 WHERE MATCH ( 'the test' );";i:23;s:40:"id = 1 text = this is the test idd = 11 ";i:24;s:41:"id = 2 text = this is thes test idd = 22 ";i:25;s:9:"SHOW META";i:26;s:9:"total = 2";i:27;s:15:"total_found = 2";i:28;s:19:"total_relation = eq";i:29;s:17:"keyword[0] = test";i:30;s:11:"docs[0] = 2";i:31;s:11:"hits[0] = 2";i:32;s:46:"SELECT * FROM i2 WHERE MATCH ( 'the test' );";i:33;s:40:"id = 1 text = this is the test idd = 11 ";i:34;s:41:"id = 2 text = this is thes test idd = 22 ";i:35;s:9:"SHOW META";i:36;s:9:"total = 2";i:37;s:15:"total_found = 2";i:38;s:19:"total_relation = eq";i:39;s:17:"keyword[0] = test";i:40;s:11:"docs[0] = 2";i:41;s:11:"hits[0] = 2";i:42;s:29:"SET GLOBAL @filter1 = ( 101 )";i:43;s:39:"SELECT * FROM idx WHERE idd IN @filter1";i:44;s:30:"id = 1 text = test1 idd = 101 ";i:45;s:9:"SHOW META";i:46;s:9:"total = 1";i:47;s:15:"total_found = 1";i:48;s:19:"total_relation = eq";i:49;s:33:"SET GLOBAL @filter1 = ( 22, 102 )";i:50;s:10:"started=ok";i:51;s:39:"SELECT * FROM idx WHERE idd IN @filter1";i:52;s:30:"id = 2 text = test2 idd = 102 ";i:53;s:9:"SHOW META";i:54;s:9:"total = 1";i:55;s:15:"total_found = 1";i:56;s:19:"total_relation = eq";i:57;s:33:"SET GLOBAL @filter1 = ( 22, 103 )";i:58;s:10:"started=ok";i:59;s:47:"SELECT * FROM rt1 WHERE MATCH ( 'the test' );";i:60;s:40:"id = 1 text = this is the test idd = 11 ";i:61;s:41:"id = 2 text = this is thes test idd = 22 ";i:62;s:9:"SHOW META";i:63;s:9:"total = 2";i:64;s:15:"total_found = 2";i:65;s:19:"total_relation = eq";i:66;s:17:"keyword[0] = test";i:67;s:11:"docs[0] = 2";i:68;s:11:"hits[0] = 2";i:69;s:47:"SELECT * FROM rt2 WHERE MATCH ( 'the test' );";i:70;s:40:"id = 1 text = this is the test idd = 11 ";i:71;s:41:"id = 2 text = this is thes test idd = 22 ";i:72;s:9:"SHOW META";i:73;s:9:"total = 2";i:74;s:15:"total_found = 2";i:75;s:19:"total_relation = eq";i:76;s:17:"keyword[0] = test";i:77;s:11:"docs[0] = 2";i:78;s:11:"hits[0] = 2";i:79;s:46:"SELECT * FROM i1 WHERE MATCH ( 'the test' );";i:80;s:40:"id = 1 text = this is the test idd = 11 ";i:81;s:41:"id = 2 text = this is thes test idd = 22 ";i:82;s:9:"SHOW META";i:83;s:9:"total = 2";i:84;s:15:"total_found = 2";i:85;s:19:"total_relation = eq";i:86;s:17:"keyword[0] = test";i:87;s:11:"docs[0] = 2";i:88;s:11:"hits[0] = 2";i:89;s:46:"SELECT * FROM i2 WHERE MATCH ( 'the test' );";i:90;s:40:"id = 1 text = this is the test idd = 11 ";i:91;s:41:"id = 2 text = this is thes test idd = 22 ";i:92;s:9:"SHOW META";i:93;s:9:"total = 2";i:94;s:15:"total_found = 2";i:95;s:19:"total_relation = eq";i:96;s:17:"keyword[0] = test";i:97;s:11:"docs[0] = 2";i:98;s:11:"hits[0] = 2";}}}

0 comments on commit f3cc097

Please sign in to comment.