diff --git a/src/accumulator.h b/src/accumulator.h index c370a03130..bc539bf793 100644 --- a/src/accumulator.h +++ b/src/accumulator.h @@ -95,7 +95,7 @@ class RtAccum_t CSphVector m_dCmd; bool m_bKeywordDict {true}; - DictRefPtr_c m_pDict; + DictRefPtr_c m_pDict; CSphDict * m_pRefDict = nullptr; // not owned, used only for ==-matching @@ -109,7 +109,7 @@ class RtAccum_t void Cleanup(); void AddDocument ( ISphHits * pHits, const CSphMatch & tDoc, bool bReplace, int iRowSize, const char ** ppStr, const VecTraits_T & dMvas, const DocstoreBuilder_i::Doc_t * pStoredDoc ); - RtSegment_t * CreateSegment ( int iRowSize, int iWordsCheckpoint ); + RtSegment_t * CreateSegment ( int iRowSize, int iWordsCheckpoint, ESphHitless eHitless, const VecTraits_T & dHitlessWords ); void CleanupDuplicates ( int iRowSize ); void GrabLastWarning ( CSphString & sWarning ); void SetIndex ( RtIndex_i * pIndex ); diff --git a/src/indexsettings.cpp b/src/indexsettings.cpp index 3a9bbb8a13..ce2285befb 100644 --- a/src/indexsettings.cpp +++ b/src/indexsettings.cpp @@ -854,6 +854,15 @@ void CSphIndexSettings::Format ( SettingsFormatter_c & tOut, FilenameBuilder_i * tOut.Add ( "index_token_filter", m_sIndexTokenFilter, !m_sIndexTokenFilter.IsEmpty() ); tOut.Add ( "attr_update_reserve", m_tBlobUpdateSpace, m_tBlobUpdateSpace!=DEFAULT_ATTR_UPDATE_RESERVE ); + if ( m_eHitless==SPH_HITLESS_ALL ) + { + tOut.Add ( "hitless_words", "all", true ); + } else if ( m_eHitless==SPH_HITLESS_SOME ) + { + CSphString sHitlessFiles = FormatPath ( m_sHitlessFiles, pFilenameBuilder ); + tOut.Add ( "hitless_words", sHitlessFiles, true ); + } + DocstoreSettings_t::Format ( tOut, pFilenameBuilder ); } @@ -948,6 +957,21 @@ bool IndexSettingsContainer_c::AddOption ( const CSphString & sName, const CSphS return true; } + if ( sName=="hitless_words" && ( sValue!="none" && sValue!="all" ) ) + { + RemoveKeys ( sName ); + m_dHitlessFiles.Reset(); + StrVec_t dValues = SplitArg ( sValue, m_dHitlessFiles ); + + // need only names for hitless files + StringBuilder_c sTmp ( " " ); + for ( const CSphString & sVal : dValues ) + sTmp << sVal; + + return Add ( sName, sTmp.cstr() ); + + } + return Add ( sName, sValue ); } @@ -1059,6 +1083,9 @@ StrVec_t IndexSettingsContainer_c::GetFiles() const dFiles.Add(j); } + for ( const auto & i : m_dHitlessFiles ) + dFiles.Add ( i ); + return dFiles; } diff --git a/src/indexsettings.h b/src/indexsettings.h index 6a9c03981e..e872b3c87b 100644 --- a/src/indexsettings.h +++ b/src/indexsettings.h @@ -338,6 +338,7 @@ class IndexSettingsContainer_c StrVec_t m_dStopwordFiles; StrVec_t m_dExceptionFiles; StrVec_t m_dWordformFiles; + StrVec_t m_dHitlessFiles; CSphString m_sError; }; diff --git a/src/sphinx.cpp b/src/sphinx.cpp index ef82f98fba..f3bfedb0ba 100644 --- a/src/sphinx.cpp +++ b/src/sphinx.cpp @@ -1984,8 +1984,6 @@ class CSphIndex_VLN : public CSphIndex, public IndexUpdateHelper_c, public Index private: mutable CSphIndexProgress m_tProgress; - bool LoadHitlessWords ( CSphVector & dHitlessWords ); - private: int64_t m_iDocinfo; ///< my docinfo cache size int64_t m_iDocinfoIndex; ///< docinfo "index" entries count (each entry is 2x docinfo rows, for min/max) @@ -9773,6 +9771,7 @@ void SaveIndexSettings ( CSphWriter & tWriter, const CSphIndexSettings & tSettin tWriter.PutString ( tSettings.m_sIndexTokenFilter ); tWriter.PutOffset ( tSettings.m_tBlobUpdateSpace ); tWriter.PutDword ( tSettings.m_iSkiplistBlockSize ); + tWriter.PutString ( tSettings.m_sHitlessFiles ); } @@ -10277,46 +10276,30 @@ bool CSphIndex_VLN::RelocateBlock ( int iFile, BYTE * pBuffer, int iRelocationSi } -bool CSphIndex_VLN::LoadHitlessWords ( CSphVector & dHitlessWords ) +bool LoadHitlessWords ( const CSphString & sHitlessFiles, ISphTokenizer * pTok, CSphDict * pDict, CSphVector & dHitlessWords, CSphString & sError ) { assert ( dHitlessWords.GetLength()==0 ); - if ( m_tSettings.m_sHitlessFiles.IsEmpty() ) + if ( sHitlessFiles.IsEmpty() ) return true; - const char * szStart = m_tSettings.m_sHitlessFiles.cstr(); + StrVec_t dFiles; + sphSplit ( dFiles, sHitlessFiles.cstr(), ", " ); - while ( *szStart ) + for ( const CSphString & sFilename : dFiles ) { - while ( *szStart && ( sphIsSpace ( *szStart ) || *szStart==',' ) ) - ++szStart; - - if ( !*szStart ) - break; - - const char * szWordStart = szStart; - - while ( *szStart && !sphIsSpace ( *szStart ) && *szStart!=',' ) - ++szStart; - - if ( szStart - szWordStart > 0 ) - { - CSphString sFilename; - sFilename.SetBinary ( szWordStart, szStart-szWordStart ); - - CSphAutofile tFile ( sFilename.cstr(), SPH_O_READ, m_sLastError ); - if ( tFile.GetFD()==-1 ) - return false; + CSphAutofile tFile ( sFilename.cstr(), SPH_O_READ, sError ); + if ( tFile.GetFD()==-1 ) + return false; - CSphVector dBuffer ( (int)tFile.GetSize() ); - if ( !tFile.Read ( &dBuffer[0], dBuffer.GetLength(), m_sLastError ) ) - return false; + CSphVector dBuffer ( (int)tFile.GetSize() ); + if ( !tFile.Read ( &dBuffer[0], dBuffer.GetLength(), sError ) ) + return false; - // FIXME!!! dict=keywords + hitless_words=some - m_pTokenizer->SetBuffer ( &dBuffer[0], dBuffer.GetLength() ); - while ( BYTE * sToken = m_pTokenizer->GetToken() ) - dHitlessWords.Add ( m_pDict->GetWordID ( sToken ) ); - } + // FIXME!!! dict=keywords + hitless_words=some + pTok->SetBuffer ( &dBuffer[0], dBuffer.GetLength() ); + while ( BYTE * sToken = pTok->GetToken() ) + dHitlessWords.Add ( pDict->GetWordID ( sToken ) ); } dHitlessWords.Uniq(); @@ -11047,7 +11030,7 @@ int CSphIndex_VLN::Build ( const CSphVector & dSources, int iMemory CSphVector dHitlessWords; - if ( !LoadHitlessWords ( dHitlessWords ) ) + if ( !LoadHitlessWords ( m_tSettings.m_sHitlessFiles, m_pTokenizer, m_pDict, dHitlessWords, m_sLastError ) ) return 0; // vars shared between phases @@ -13818,6 +13801,9 @@ void LoadIndexSettings ( CSphIndexSettings & tSettings, CSphReader & tReader, DW tSettings.m_iSkiplistBlockSize = 128; else tSettings.m_iSkiplistBlockSize = (int)tReader.GetDword(); + + if ( uVersion>=60 ) + tSettings.m_sHitlessFiles = tReader.GetString(); } @@ -16773,7 +16759,7 @@ int CSphIndex_VLN::DebugCheck ( FILE * fp ) if ( !pIndexChecker->OpenFiles(sError) ) return 1; - if ( !LoadHitlessWords ( pIndexChecker->GetHitlessWords() ) ) + if ( !LoadHitlessWords ( m_tSettings.m_sHitlessFiles, m_pTokenizer, m_pDict, pIndexChecker->GetHitlessWords(), m_sLastError ) ) tReporter.Fail ( "unable to load hitless words: %s", m_sLastError.cstr() ); CSphSavedFile tStat; @@ -20346,13 +20332,15 @@ class CRtDictKeywords final : public ISphRtDictWraper CSphString m_sWarning; int m_iKeywordsOverrun = 0; CSphString m_sWord; // For allocation reuse. + const bool m_bStoreID = false; protected: virtual ~CRtDictKeywords () final {} // fixme! remove public: - explicit CRtDictKeywords ( CSphDict * pBase ) + explicit CRtDictKeywords ( CSphDict * pBase, bool bStoreID ) : m_pBase ( pBase ) + , m_bStoreID ( bStoreID ) { SafeAddRef ( pBase ); m_dPackedKeywords.Add ( 0 ); // avoid zero offset at all costs @@ -20360,22 +20348,34 @@ class CRtDictKeywords final : public ISphRtDictWraper SphWordID_t GetWordID ( BYTE * pWord ) final { - return m_pBase->GetWordID ( pWord ) ? AddKeyword ( pWord ) : 0; + SphWordID_t tWordID = m_pBase->GetWordID ( pWord ); + if ( tWordID ) + return AddKeyword ( pWord, tWordID ); + return 0; } SphWordID_t GetWordIDWithMarkers ( BYTE * pWord ) final { - return m_pBase->GetWordIDWithMarkers ( pWord ) ? AddKeyword ( pWord ) : 0; + SphWordID_t tWordID = m_pBase->GetWordIDWithMarkers ( pWord ); + if ( tWordID ) + return AddKeyword ( pWord, tWordID ); + return 0; } SphWordID_t GetWordIDNonStemmed ( BYTE * pWord ) final { - return m_pBase->GetWordIDNonStemmed ( pWord ) ? AddKeyword ( pWord ) : 0; + SphWordID_t tWordID = m_pBase->GetWordIDNonStemmed ( pWord ); + if ( tWordID ) + return AddKeyword ( pWord, tWordID ); + return 0; } SphWordID_t GetWordID ( const BYTE * pWord, int iLen, bool bFilterStops ) final { - return m_pBase->GetWordID ( pWord, iLen, bFilterStops ) ? AddKeyword ( pWord ) : 0; + SphWordID_t tWordID = m_pBase->GetWordID ( pWord, iLen, bFilterStops ); + if ( tWordID ) + return AddKeyword ( pWord, tWordID ); + return 0; } const BYTE * GetPackedKeywords () final { return m_dPackedKeywords.Begin(); } @@ -20405,7 +20405,7 @@ class CRtDictKeywords final : public ISphRtDictWraper uint64_t GetSettingsFNV () const final { return m_pBase->GetSettingsFNV(); } private: - SphWordID_t AddKeyword ( const BYTE * pWord ) + SphWordID_t AddKeyword ( const BYTE * pWord, SphWordID_t tWordID ) { int iLen = strlen ( ( const char * ) pWord ); // stemmer might squeeze out the word @@ -20439,9 +20439,14 @@ class CRtDictKeywords final : public ISphRtDictWraper } int iOff = m_dPackedKeywords.GetLength (); - m_dPackedKeywords.Resize ( iOff + iLen + 1 ); + int iPackedLen = iOff + iLen + 1; + if ( m_bStoreID ) + iPackedLen += sizeof ( tWordID ); + m_dPackedKeywords.Resize ( iPackedLen ); m_dPackedKeywords[iOff] = ( BYTE ) ( iLen & 0xFF ); memcpy ( m_dPackedKeywords.Begin () + iOff + 1, pWord, iLen ); + if ( m_bStoreID ) + memcpy ( m_dPackedKeywords.Begin () + iOff + 1 + iLen, &tWordID, sizeof(tWordID) ); m_hKeywords.Add ( iOff, m_sWord ); @@ -20449,9 +20454,9 @@ class CRtDictKeywords final : public ISphRtDictWraper } }; -ISphRtDictWraper * sphCreateRtKeywordsDictionaryWrapper ( CSphDict * pBase ) +ISphRtDictWraper * sphCreateRtKeywordsDictionaryWrapper ( CSphDict * pBase, bool bStoreID ) { - return new CRtDictKeywords ( pBase ); + return new CRtDictKeywords ( pBase, bStoreID ); } diff --git a/src/sphinxint.h b/src/sphinxint.h index 69f1e35bca..25074fc44a 100644 --- a/src/sphinxint.h +++ b/src/sphinxint.h @@ -42,7 +42,7 @@ inline const char * strerrorm ( int errnum ) ////////////////////////////////////////////////////////////////////////// const DWORD INDEX_MAGIC_HEADER = 0x58485053; ///< my magic 'SPHX' header -const DWORD INDEX_FORMAT_VERSION = 59; ///< my format version +const DWORD INDEX_FORMAT_VERSION = 60; ///< my format version const char MAGIC_SYNONYM_WHITESPACE = 1; // used internally in tokenizer only const char MAGIC_CODE_SENTENCE = 2; // emitted from tokenizer on sentence boundary @@ -1673,6 +1673,7 @@ void ReadSchema ( CSphReader & rdInfo, CSphSchema & m_tSchema, DWORD uVersion void SaveIndexSettings ( CSphWriter & tWriter, const CSphIndexSettings & tSettings ); void LoadIndexSettings ( CSphIndexSettings & tSettings, CSphReader & tReader, DWORD uVersion ); bool AddFieldLens ( CSphSchema & tSchema, bool bDynamic, CSphString & sError ); +bool LoadHitlessWords ( const CSphString & sHitlessFiles, ISphTokenizer * pTok, CSphDict * pDict, CSphVector & dHitlessWords, CSphString & sError ); /// Get current thread local index - internal do not use class RtIndex_i; @@ -1888,7 +1889,7 @@ class ISphRtDictWraper : public CSphDict virtual void ResetWarning() = 0; }; -ISphRtDictWraper * sphCreateRtKeywordsDictionaryWrapper ( CSphDict * pBase ); +ISphRtDictWraper * sphCreateRtKeywordsDictionaryWrapper ( CSphDict * pBase, bool bStoreID ); struct SphExpanded_t { diff --git a/src/sphinxpq.cpp b/src/sphinxpq.cpp index 29b22f8018..be998795d4 100644 --- a/src/sphinxpq.cpp +++ b/src/sphinxpq.cpp @@ -165,6 +165,7 @@ class PercolateIndex_c : public PercolateIndex_i CSphFixedVector m_dLoadedQueries { 0 }; // temporary, just descriptions CSphSchema m_tMatchSchema; + CSphVector m_dHitlessWords; void DoMatchDocuments ( const RtSegment_t * pSeg, PercolateMatchResult_t & tRes ); bool MultiScan ( const CSphQuery * pQuery, CSphQueryResult * pResult, int iSorters, @@ -191,6 +192,8 @@ class PercolateIndex_c : public PercolateIndex_i void AddToStoredUnl ( StoredQuerySharedPtr_t tNew ) REQUIRES ( m_tLockHash, m_tLock ); void PostSetupUnl () REQUIRES ( m_tLockHash, m_tLock ); SharedPQSlice_t GetStored () const EXCLUDES ( m_tLock ); + + bool NeedStoreWordID () const override { return ( m_tSettings.m_eHitless==SPH_HITLESS_SOME && m_dHitlessWords.GetLength() ); } }; ////////////////////////////////////////////////////////////////////////// @@ -207,7 +210,7 @@ PercolateIndex_i * CreateIndexPercolate ( const CSphSchema & tSchema, const char return new PercolateIndex_c ( tSchema, sIndexName, sPath ); } -static SegmentReject_t SegmentGetRejects ( const RtSegment_t * pSeg, bool bBuildInfix, bool bUtf8 ) +static SegmentReject_t SegmentGetRejects ( const RtSegment_t * pSeg, bool bBuildInfix, bool bUtf8, ESphHitless eHitless ) { SegmentReject_t tReject; tReject.m_iRows = pSeg->m_uRows; @@ -227,7 +230,7 @@ static SegmentReject_t SegmentGetRejects ( const RtSegment_t * pSeg, bool bBuild tReject.m_dWilds.Fill ( 0 ); } - RtWordReader_t tDict ( pSeg, true, PERCOLATE_WORDS_PER_CP ); + RtWordReader_t tDict ( pSeg, true, PERCOLATE_WORDS_PER_CP, eHitless ); const RtWord_t * pWord = nullptr; BloomGenTraits_t tBloom0 ( tReject.m_dWilds.Begin() ); BloomGenTraits_t tBloom1 ( tReject.m_dWilds.Begin() + PERCOLATE_BLOOM_WILD_COUNT ); @@ -947,7 +950,7 @@ bool PercolateQwordSetup_c::QwordSetup ( ISphQword * pQword ) const CSphVector dDictWords; ARRAY_FOREACH ( i, dDictLoc ) { - RtWordReader_t tReader ( m_pSeg, true, PERCOLATE_WORDS_PER_CP ); + RtWordReader_t tReader ( m_pSeg, true, PERCOLATE_WORDS_PER_CP, m_eHitless ); // locator // m_uOff - Start // m_uLen - End @@ -1034,10 +1037,10 @@ SphWordID_t DictMap_t::GetTerm ( BYTE * sWord ) const return pTerm->m_uWordID; } -PercolateMatchContext_t * PercolateIndex_c::CreateMatchContext ( const RtSegment_t * pSeg, const SegmentReject_t &tReject ) +PercolateMatchContext_t * PercolateIndex_c::CreateMatchContext ( const RtSegment_t * pSeg, const SegmentReject_t & tReject ) { return new PercolateMatchContext_t ( pSeg, m_iMaxCodepointLength, m_pDict->HasMorphology(), GetStatelessDict ( m_pDict ), this - , m_tSchema, tReject ); + , m_tSchema, tReject, m_tSettings.m_eHitless ); } // percolate matching @@ -1382,7 +1385,7 @@ void PercolateIndex_c::DoMatchDocuments ( const RtSegment_t * pSeg, PercolateMat { // reject need bloom filter for either infix or prefix auto tReject = SegmentGetRejects ( - pSeg, ( m_tSettings.m_iMinInfixLen>0 || m_tSettings.GetMinPrefixLen ( m_pDict->GetSettings().m_bWordDict )>0 ), m_iMaxCodepointLength>1 ); + pSeg, ( m_tSettings.m_iMinInfixLen>0 || m_tSettings.GetMinPrefixLen ( m_pDict->GetSettings().m_bWordDict )>0 ), m_iMaxCodepointLength>1, m_tSettings.m_eHitless ); CSphAtomic iCurQuery; CSphFixedVector dResults ( 1 ); @@ -1462,11 +1465,11 @@ bool PercolateIndex_c::MatchDocuments ( RtAccum_t * pAccExt, PercolateMatchResul pAcc->Sort(); - RtSegment_t * pSeg = pAcc->CreateSegment ( m_tSchema.GetRowSize(), PERCOLATE_WORDS_PER_CP ); + RtSegment_t * pSeg = pAcc->CreateSegment ( m_tSchema.GetRowSize(), PERCOLATE_WORDS_PER_CP, m_tSettings.m_eHitless, m_dHitlessWords ); assert ( !pSeg || pSeg->m_uRows>0 ); assert ( !pSeg || pSeg->m_tAliveRows>0 ); BuildSegmentInfixes ( pSeg, m_pDict->HasMorphology(), true, m_tSettings.m_iMinInfixLen, - PERCOLATE_WORDS_PER_CP, ( m_iMaxCodepointLength>1 ) ); + PERCOLATE_WORDS_PER_CP, ( m_iMaxCodepointLength>1 ), m_tSettings.m_eHitless ); DoMatchDocuments ( pSeg, tRes ); SafeRelease ( pSeg ); @@ -2059,6 +2062,10 @@ void PercolateIndex_c::PostSetupUnl() if ( m_tSettings.m_bIndexExactWords ) SetupExactDict ( pDict, pTokenizer ); + // hitless + if ( !LoadHitlessWords ( m_tSettings.m_sHitlessFiles, m_pTokenizerIndexing, m_pDict, m_dHitlessWords, m_sLastError ) ) + sphWarning ( "index '%s': %s", m_sIndexName.cstr(), m_sLastError.cstr() ); + m_pQueries->ReserveGap( m_dLoadedQueries.GetLength () ); CSphString sError; diff --git a/src/sphinxpq.h b/src/sphinxpq.h index e4f34477d7..305432da44 100644 --- a/src/sphinxpq.h +++ b/src/sphinxpq.h @@ -149,9 +149,10 @@ struct SegmentReject_t class PercolateQwordSetup_c : public ISphQwordSetup { public: - PercolateQwordSetup_c ( const RtSegment_t * pSeg, int iMaxCodepointLength ) + PercolateQwordSetup_c ( const RtSegment_t * pSeg, int iMaxCodepointLength, ESphHitless eHitless ) : m_pSeg ( pSeg ) , m_iMaxCodepointLength ( iMaxCodepointLength ) + , m_eHitless ( eHitless ) {} ISphQword * QwordSpawn ( const XQKeyword_t & ) const final; @@ -160,6 +161,7 @@ class PercolateQwordSetup_c : public ISphQwordSetup private: const RtSegment_t * m_pSeg; int m_iMaxCodepointLength; + ESphHitless m_eHitless = SPH_HITLESS_NONE; }; class PercolateDictProxy_c : public CSphDict @@ -243,7 +245,7 @@ struct PercolateMatchContext_t : public PQMatchContextResult_t PercolateMatchContext_t ( const RtSegment_t * pSeg, int iMaxCodepointLength, bool bHasMorph, CSphDict * pDictMorph, const PercolateIndex_i * pIndex, const ISphSchema & tSchema, - const SegmentReject_t & tReject ) + const SegmentReject_t & tReject, ESphHitless eHitless ) : m_tDictMap ( bHasMorph, pDictMorph ) , m_tSchema ( tSchema ) , m_tReject ( tReject ) @@ -256,7 +258,7 @@ struct PercolateMatchContext_t : public PQMatchContextResult_t m_pCtx->m_pIndexData = pSeg; // setup search terms - m_pTermSetup = new PercolateQwordSetup_c ( pSeg, iMaxCodepointLength ); + m_pTermSetup = new PercolateQwordSetup_c ( pSeg, iMaxCodepointLength, eHitless ); m_pTermSetup->SetDict ( &m_tDictMap ); m_pTermSetup->m_pIndex = pIndex; m_pTermSetup->m_pCtx = m_pCtx.Ptr (); diff --git a/src/sphinxrt.cpp b/src/sphinxrt.cpp index 186a14d3e0..52b8544a1c 100644 --- a/src/sphinxrt.cpp +++ b/src/sphinxrt.cpp @@ -27,6 +27,7 @@ #include "accumulator.h" #include "indexcheck.h" #include "indexsettings.h" +#include "indexformat.h" #include #include @@ -455,7 +456,11 @@ struct RtWordWriter_t BYTE * pEnd = pWords->AddN ( 4*sizeof(DWORD) ); const BYTE * pBegin = pWords->Begin(); - ZipDword ( pEnd, tWord.m_uDocs ); + DWORD uDocs = tWord.m_uDocs; + if ( !tWord.m_bHasHitlist ) + uDocs |= HITLESS_DOC_FLAG; + + ZipDword ( pEnd, uDocs ); ZipDword ( pEnd, tWord.m_uHits ); ZipDword ( pEnd, tWord.m_uDoc - m_uLastDoc ); @@ -471,9 +476,10 @@ struct RtWordWriter_t } }; -RtWordReader_t::RtWordReader_t ( const RtSegment_t * pSeg, bool bWordDict, int iWordsCheckpoint ) +RtWordReader_t::RtWordReader_t ( const RtSegment_t * pSeg, bool bWordDict, int iWordsCheckpoint, ESphHitless eHitlessMode ) : m_bWordDict ( bWordDict ) , m_iWordsCheckpoint ( iWordsCheckpoint ) + , m_eHitlessMode ( eHitlessMode ) { m_tWord.m_uWordID = 0; Reset ( pSeg ); @@ -533,6 +539,9 @@ const RtWord_t * RtWordReader_t::UnzipWord () pIn = UnzipDword ( &uDeltaDoc, pIn ); m_pCur = pIn; + m_tWord.m_bHasHitlist = ( m_eHitlessMode==SPH_HITLESS_NONE || ( m_eHitlessMode==SPH_HITLESS_SOME && !( m_tWord.m_uDocs & HITLESS_DOC_FLAG ) ) ); + m_tWord.m_uDocs = ( m_eHitlessMode==SPH_HITLESS_NONE ? m_tWord.m_uDocs : ( m_tWord.m_uDocs & HITLESS_DOC_MASK ) ); + m_tWord.m_uDoc += uDeltaDoc; return &m_tWord; } @@ -1165,7 +1174,7 @@ class RtIndex_c final : public RtIndex_i, public ISphNoncopyable, public ISphWor private: static const DWORD META_HEADER_MAGIC = 0x54525053; ///< my magic 'SPRT' header - static const DWORD META_VERSION = 15; ///< current version + static const DWORD META_VERSION = 16; ///< current version int m_iStride; LazyVector_T m_dRamChunks GUARDED_BY ( m_tChunkLock ); @@ -1205,7 +1214,7 @@ class RtIndex_c final : public RtIndex_i, public ISphNoncopyable, public ISphWor bool m_bKeywordDict; int m_iWordsCheckpoint = RTDICT_CHECKPOINT_V5; int m_iMaxCodepointLength = 0; - TokenizerRefPtr_c m_pTokenizerIndexing; + TokenizerRefPtr_c m_pTokenizerIndexing; bool m_bLoadRamPassedOk = true; bool m_bSaveDisabled = false; bool m_bHasFiles = false; @@ -1216,6 +1225,7 @@ class RtIndex_c final : public RtIndex_i, public ISphNoncopyable, public ISphWor CSphFixedVector m_dFieldLensRam { SPH_MAX_FIELDS }; ///< field lengths summed over current RAM chunk CSphFixedVector m_dFieldLensDisk { SPH_MAX_FIELDS }; ///< field lengths summed over all disk chunks CSphBitvec m_tMorphFields; + CSphVector m_dHitlessWords; CSphScopedPtr m_pDocstoreFields {nullptr}; // rt index doesn't have its own docstore, but it must keep all fields to get their ids for GetDoc @@ -1265,6 +1275,7 @@ class RtIndex_c final : public RtIndex_i, public ISphNoncopyable, public ISphWor bool MergeSegments ( CSphVector & dSegments, bool bForceDump, int64_t iMemLimit, bool bHasNewSegment ); RtSegmentRefPtf_t MergeDoubleBufSegments ( CSphVector & dSegments ) const; + bool NeedStoreWordID () const override; }; @@ -1705,7 +1716,7 @@ void RtAccum_t::SetupDict ( const RtIndex_i * pIndex, CSphDict * pDict, bool bKe m_pDict = GetStatelessDict ( pDict ); if ( m_bKeywordDict ) { - m_pDict = m_pDictRt = sphCreateRtKeywordsDictionaryWrapper ( m_pDict ); + m_pDict = m_pDictRt = sphCreateRtKeywordsDictionaryWrapper ( m_pDict, pIndex->NeedStoreWordID() ); SafeAddRef ( m_pDict ); // since m_pDict and m_pDictRt are DIFFERENT types, = works via CsphDict* } } @@ -1942,7 +1953,7 @@ static void FixupSegmentCheckpoints ( RtSegment_t * pSeg ) } -RtSegment_t * RtAccum_t::CreateSegment ( int iRowSize, int iWordsCheckpoint ) +RtSegment_t * RtAccum_t::CreateSegment ( int iRowSize, int iWordsCheckpoint, ESphHitless eHitless, const VecTraits_T & dHitlessWords ) { if ( !m_uAccumDocs ) return nullptr; @@ -1972,7 +1983,7 @@ RtSegment_t * RtAccum_t::CreateSegment ( int iRowSize, int iWordsCheckpoint ) Hitpos_t uEmbeddedHit = EMPTY_HIT; Hitpos_t uPrevHit = EMPTY_HIT; - for ( const CSphWordHit &tHit : m_dAccum ) + for ( const CSphWordHit & tHit : m_dAccum ) { // new keyword or doc; flush current doc if ( tHit.m_uWordID!=tWord.m_uWordID || tHit.m_tRowID!=tDoc.m_tRowID ) @@ -2020,6 +2031,21 @@ RtSegment_t * RtAccum_t::CreateSegment ( int iRowSize, int iWordsCheckpoint ) tWord.m_uHits = 0; tWord.m_uDoc = tOutDoc.ZipDocPtr(); uPrevHit = EMPTY_HIT; + if ( eHitless==SPH_HITLESS_NONE || eHitless==SPH_HITLESS_ALL || !tWord.m_uWordID || tHit.m_uWordPos==EMPTY_HIT ) + { + tWord.m_bHasHitlist = ( eHitless==SPH_HITLESS_NONE || !tWord.m_uWordID ); + } else + { + SphWordID_t tWordID = tWord.m_uWordID; + if ( m_bKeywordDict && dHitlessWords.GetLength() ) + { + const BYTE * pPackedWord = pPacketBase + tWord.m_uWordID; + DWORD uLen = pPackedWord[0]; + assert ( uLen && (int)uLen+1m_dInfixFilterCP.Begin(); const RtWord_t * pWord = nullptr; - RtWordReader_t rdDictRough ( pSeg, true, iWordsCheckpoint ); + RtWordReader_t rdDictRough ( pSeg, true, iWordsCheckpoint, eHitlessMode ); while ( ( pWord = rdDictRough.UnzipWord () )!=nullptr ) { const BYTE * pDictWord = pWord->m_sWord+1; @@ -2446,8 +2478,8 @@ void RtIndex_c::MergeKeywords ( RtSegment_t & tSeg, const RtSegment_t & tSeg1, c tSeg.m_dHits.Reserve ( Max ( tSeg1.m_dHits.GetLength(), tSeg2.m_dHits.GetLength() ) ); RtWordWriter_t tOut ( &tSeg, m_bKeywordDict, m_iWordsCheckpoint ); - RtWordReader_t tIn1 ( &tSeg1, m_bKeywordDict, m_iWordsCheckpoint ); - RtWordReader_t tIn2 ( &tSeg2, m_bKeywordDict, m_iWordsCheckpoint ); + RtWordReader_t tIn1 ( &tSeg1, m_bKeywordDict, m_iWordsCheckpoint, m_tSettings.m_eHitless ); + RtWordReader_t tIn2 ( &tSeg2, m_bKeywordDict, m_iWordsCheckpoint, m_tSettings.m_eHitless ); const RtWord_t * pWords1 = tIn1.UnzipWord (); const RtWord_t * pWords2 = tIn2.UnzipWord (); @@ -2557,7 +2589,7 @@ RtSegment_t * RtIndex_c::MergeSegments ( const RtSegment_t * pSeg1, const RtSegm if ( m_bKeywordDict ) FixupSegmentCheckpoints ( pSeg ); - BuildSegmentInfixes ( pSeg, bHasMorphology, m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ) ); + BuildSegmentInfixes ( pSeg, bHasMorphology, m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ), m_tSettings.m_eHitless ); pSeg->BuildDocID2RowIDMap(); @@ -2600,11 +2632,11 @@ bool RtIndex_c::Commit ( int * pDeleted, RtAccum_t * pAccExt ) pAcc->CleanupDuplicates ( m_tSchema.GetRowSize() ); pAcc->Sort(); - RtSegmentRefPtf_t pNewSeg { pAcc->CreateSegment ( m_tSchema.GetRowSize(), m_iWordsCheckpoint ) }; + RtSegmentRefPtf_t pNewSeg { pAcc->CreateSegment ( m_tSchema.GetRowSize(), m_iWordsCheckpoint, m_tSettings.m_eHitless, m_dHitlessWords ) }; assert ( !pNewSeg || pNewSeg->m_uRows>0 ); assert ( !pNewSeg || pNewSeg->m_tAliveRows>0 ); - BuildSegmentInfixes ( pNewSeg, m_pDict->HasMorphology(), m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ) ); + BuildSegmentInfixes ( pNewSeg, m_pDict->HasMorphology(), m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ), m_tSettings.m_eHitless ); // clean up parts we no longer need pAcc->CleanupPart(); @@ -3215,7 +3247,7 @@ bool RtIndex_c::WriteDocs ( SaveDiskDataContext_t & tCtx, CSphWriter & tWriterDi CSphVector dWords(iSegments); ARRAY_FOREACH ( i, dWordReaders ) - dWordReaders[i] = new RtWordReader_t ( tCtx.m_tGuard.m_dRamChunks[i], m_bKeywordDict, m_iWordsCheckpoint ); + dWordReaders[i] = new RtWordReader_t ( tCtx.m_tGuard.m_dRamChunks[i], m_bKeywordDict, m_iWordsCheckpoint, m_tSettings.m_eHitless ); ARRAY_FOREACH ( i, dWords ) dWords[i] = dWordReaders[i]->UnzipWord(); @@ -3315,7 +3347,7 @@ bool RtIndex_c::WriteDocs ( SaveDiskDataContext_t & tCtx, CSphWriter & tWriterDi } // write skiplist - int iSkiplistOff = (int)tWriterSkips.GetPos(); + int64_t iSkiplistOff = tWriterSkips.GetPos(); for ( int i=1; im_bHasHitlist ) + iDocsCount |= HITLESS_DOC_FLAG; + + tWriterDict.ZipInt ( iDocsCount ); tWriterDict.ZipInt ( iHits ); if ( m_bKeywordDict ) @@ -3386,7 +3422,7 @@ bool RtIndex_c::WriteDocs ( SaveDiskDataContext_t & tCtx, CSphWriter & tWriterDi // emit skiplist pointer if ( iDocs>iSkiplistBlockSize ) - tWriterDict.ZipInt ( iSkiplistOff ); + tWriterDict.ZipOffset ( iSkiplistOff ); tCtx.m_tLastDocPos = uDocpos; } @@ -3510,8 +3546,6 @@ static void FixupIndexSettings ( CSphIndexSettings & tSettings ) void RtIndex_c::SaveDiskHeader ( SaveDiskDataContext_t & tCtx, const ChunkStats_t & tStats ) const { - static const DWORD RT_INDEX_FORMAT_VERSION = 57; ///< my format version - CSphWriter tWriter; CSphString sName, sError; sName.SetSprintf ( "%s%s", tCtx.m_szFilename, sphGetExt(SPH_EXT_SPH).cstr() ); @@ -3519,7 +3553,7 @@ void RtIndex_c::SaveDiskHeader ( SaveDiskDataContext_t & tCtx, const ChunkStats_ // format tWriter.PutDword ( INDEX_MAGIC_HEADER ); - tWriter.PutDword ( RT_INDEX_FORMAT_VERSION ); + tWriter.PutDword ( INDEX_FORMAT_VERSION ); // schema WriteSchema ( tWriter, m_tSchema ); @@ -4224,7 +4258,7 @@ bool RtIndex_c::LoadRamChunk ( DWORD uVersion, bool bRebuildInfixes ) return false; if ( bRebuildInfixes ) - BuildSegmentInfixes ( pSeg, bHasMorphology, m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ) ); + BuildSegmentInfixes ( pSeg, bHasMorphology, m_bKeywordDict, m_tSettings.m_iMinInfixLen, m_iWordsCheckpoint, ( m_iMaxCodepointLength>1 ), m_tSettings.m_eHitless ); pSeg->BuildDocID2RowIDMap(); dRamChunk = AdoptSegment ( pSeg ); @@ -4282,6 +4316,9 @@ void RtIndex_c::PostSetup() if ( !ParseMorphFields ( tDictSettings.m_sMorphology, tDictSettings.m_sMorphFields, m_tSchema.GetFields(), m_tMorphFields, m_sLastError ) ) sphWarning ( "index '%s': %s", m_sIndexName.cstr(), m_sLastError.cstr() ); + // hitless + if ( !LoadHitlessWords ( m_tSettings.m_sHitlessFiles, m_pTokenizerIndexing, m_pDict, m_dHitlessWords, m_sLastError ) ) + sphWarning ( "index '%s': %s", m_sIndexName.cstr(), m_sLastError.cstr() ); // still need index files for index just created from config if ( !m_bHasFiles ) @@ -5186,7 +5223,7 @@ bool RtIndex_c::RtQwordSetupSegment ( RtQword_t * pQword, const RtSegment_t * pC // no checkpoints - check all words // no checkpoints matched - check only words prior to 1st checkpoint // checkpoint found - check words at that checkpoint - RtWordReader_t tReader ( pCurSeg, bWordDict, iWordsCheckpoint ); + RtWordReader_t tReader ( pCurSeg, bWordDict, iWordsCheckpoint, tSettings.m_eHitless ); if ( pCurSeg->m_dWordCheckpoints.GetLength() ) { @@ -5227,13 +5264,16 @@ bool RtIndex_c::RtQwordSetupSegment ( RtQword_t * pQword, const RtSegment_t * pC { pQword->m_iDocs += pWord->m_uDocs; pQword->m_iHits += pWord->m_uHits; + pQword->m_bHasHitlist &= pWord->m_bHasHitlist; if ( bSetup ) pQword->SetupReader ( pCurSeg, *pWord ); return true; } else if ( iCmp>0 ) + { return false; + } } return false; } @@ -5457,7 +5497,7 @@ void RtIndex_c::GetPrefixedWords ( const char * sSubstring, int iSubLen, const c ARRAY_FOREACH ( iSeg, dSegments ) { const RtSegment_t * pCurSeg = dSegments[iSeg]; - RtWordReader_t tReader ( pCurSeg, true, m_iWordsCheckpoint ); + RtWordReader_t tReader ( pCurSeg, true, m_iWordsCheckpoint, m_tSettings.m_eHitless ); // find initial checkpoint or check words prior to 1st checkpoint if ( pCurSeg->m_dWordCheckpoints.GetLength() ) @@ -5569,7 +5609,7 @@ void RtIndex_c::GetInfixedWords ( const char * sSubstring, int iSubLen, const ch { int iNext = (int)dPoints[i]; int iCur = iNext-1; - RtWordReader_t tReader ( pSeg, true, m_iWordsCheckpoint ); + RtWordReader_t tReader ( pSeg, true, m_iWordsCheckpoint, m_tSettings.m_eHitless ); if ( iCur>0 ) tReader.m_pCur = pSeg->m_dWords.Begin() + pSeg->m_dWordCheckpoints[iCur].m_iOffset; if ( iNextm_dWordCheckpoints.GetLength() ) @@ -5606,7 +5646,7 @@ void RtIndex_c::GetSuggest ( const SuggestArgs_t & tArgs, SuggestResult_t & tRes if ( dSegments.GetLength() ) { assert ( !tRes.m_pWordReader && !tRes.m_pSegments ); - tRes.m_pWordReader = new RtWordReader_t ( dSegments[0], true, m_iWordsCheckpoint ); + tRes.m_pWordReader = new RtWordReader_t ( dSegments[0], true, m_iWordsCheckpoint, m_tSettings.m_eHitless ); tRes.m_pSegments = &tGuard.m_dRamChunks; tRes.m_bHasExactDict = m_tSettings.m_bIndexExactWords; @@ -8157,6 +8197,11 @@ bool RtIndex_c::ExplainQuery ( const CSphString & sQuery, CSphString & sRes, CSp } +bool RtIndex_c::NeedStoreWordID () const +{ + return ( m_tSettings.m_eHitless==SPH_HITLESS_SOME && m_dHitlessWords.GetLength() ); +} + ////////////////////////////////////////////////////////////////////////// // BINLOG @@ -9148,7 +9193,7 @@ bool RtBinlog_c::ReplayCommit ( int iBinlog, DWORD uReplayFlags, BinlogReader_c { FixupSegmentCheckpoints ( pSeg ); BuildSegmentInfixes ( pSeg, tIndex.m_pRT->GetDictionary()->HasMorphology(), - tIndex.m_pRT->IsWordDict(), tIndex.m_pRT->GetSettings().m_iMinInfixLen, tIndex.m_pRT->GetWordCheckoint(), ( tIndex.m_pRT->GetMaxCodepointLength()>1 ) ); + tIndex.m_pRT->IsWordDict(), tIndex.m_pRT->GetSettings().m_iMinInfixLen, tIndex.m_pRT->GetWordCheckoint(), ( tIndex.m_pRT->GetMaxCodepointLength()>1 ), tIndex.m_pRT->GetSettings().m_eHitless ); } // actually replay diff --git a/src/sphinxrt.h b/src/sphinxrt.h index 07123fb4d5..568b585d25 100644 --- a/src/sphinxrt.h +++ b/src/sphinxrt.h @@ -95,6 +95,8 @@ class RtIndex_i : public CSphIndex /// acquire thread-local indexing accumulator /// returns NULL if another index already uses it in an open txn RtAccum_t * AcquireAccum ( CSphDict * pDict, RtAccum_t * pAccExt=nullptr, bool bWordDict=true, bool bSetTLS = true, CSphString * sError=nullptr ); + + virtual bool NeedStoreWordID () const = 0; }; /// initialize subsystem @@ -155,6 +157,7 @@ struct RtWord_t DWORD m_uDocs = 0; ///< document count (for stats and/or BM25) DWORD m_uHits = 0; ///< hit count (for stats and/or BM25) DWORD m_uDoc = 0; ///< index into segment docs + bool m_bHasHitlist = true; }; @@ -245,8 +248,9 @@ struct RtWordReader_t bool m_bWordDict; int m_iWordsCheckpoint; int m_iCheckpoint = 0; + const ESphHitless m_eHitlessMode = SPH_HITLESS_NONE; - RtWordReader_t ( const RtSegment_t * pSeg, bool bWordDict, int iWordsCheckpoint ); + RtWordReader_t ( const RtSegment_t * pSeg, bool bWordDict, int iWordsCheckpoint, ESphHitless eHitlessMode ); void Reset ( const RtSegment_t * pSeg ); const RtWord_t * UnzipWord (); }; @@ -345,7 +349,7 @@ bool BuildBloom ( const BYTE * sWord, int iLen, int iInfixCodepointCount, bool b int iKeyValCount, BloomCheckTraits_t &tBloom ); void BuildSegmentInfixes ( RtSegment_t * pSeg, bool bHasMorphology, bool bKeywordDict, int iMinInfixLen, - int iWordsCheckpoint, bool bUtf8 ); + int iWordsCheckpoint, bool bUtf8, ESphHitless eHitlessMode ); bool ExtractInfixCheckpoints ( const char * sInfix, int iBytes, int iMaxCodepointLength, int iDictCpCount, const CSphTightVector &dFilter, CSphVector &dCheckpoints ); diff --git a/test/test_408/model.bin b/test/test_408/model.bin new file mode 100644 index 0000000000..045a2f0f9e --- /dev/null +++ b/test/test_408/model.bin @@ -0,0 +1,13 @@ +a:1:{i:0;a:181:{i:0;a:2:{s:8:"sphinxql";s:298:"insert into none(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + ";s:14:"total_affected";i:3;}i:1;a:2:{s:8:"sphinxql";s:298:"insert into some(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + ";s:14:"total_affected";i:3;}i:2;a:2:{s:8:"sphinxql";s:297:"insert into all(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + ";s:14:"total_affected";i:3;}i:3;a:2:{s:8:"sphinxql";s:299:"insert into some1(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + ";s:14:"total_affected";i:3;}i:4;a:2:{s:8:"sphinxql";s:102:"insert into hit_0(id, title) values (1, 'protest, to teach, to feed, and'), (2, 'to and windows text')";s:14:"total_affected";i:2;}i:5;a:2:{s:8:"sphinxql";s:102:"insert into hit_1(id, title) values (1, 'protest, to teach, to feed, and'), (2, 'to and windows text')";s:14:"total_affected";i:2;}i:6;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:58:"SELECT * FROM none WHERE MATCH(' tin woodman '); SHOW META";}i:7;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:8;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:58:"SELECT * FROM some WHERE MATCH(' tin woodman '); SHOW META";}i:9;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:10;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:58:"SELECT * FROM all WHERE MATCH(' tin woodman '); SHOW META";}i:11;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:12;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM none WHERE MATCH(' lowered '); SHOW META";}i:13;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:14;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM some WHERE MATCH(' lowered '); SHOW META";}i:15;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:16;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM all WHERE MATCH(' lowered '); SHOW META";}i:17;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:18;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:60:"SELECT * FROM none WHERE MATCH(' "tin woodman" '); SHOW META";}i:19;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:20;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:60:"SELECT * FROM some WHERE MATCH(' "tin woodman" '); SHOW META";}i:21;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:22;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:60:"SELECT * FROM all WHERE MATCH(' "tin woodman" '); SHOW META";}i:23;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:24;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:60:"SELECT * FROM none WHERE MATCH(' "and lowered" '); SHOW META";}i:25;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:26;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:60:"SELECT * FROM some WHERE MATCH(' "and lowered" '); SHOW META";}i:27;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=1, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:28;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:60:"SELECT * FROM all WHERE MATCH(' "and lowered" '); SHOW META";}i:29;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:30;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:62:"SELECT * FROM none WHERE MATCH(' "tin woodman"~2 '); SHOW META";}i:31;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:32;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:62:"SELECT * FROM some WHERE MATCH(' "tin woodman"~2 '); SHOW META";}i:33;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:34;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:62:"SELECT * FROM all WHERE MATCH(' "tin woodman"~2 '); SHOW META";}i:35;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:36;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:64:"SELECT * FROM none WHERE MATCH(' "lowered his axe" '); SHOW META";}i:37;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:3:"his";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"axe";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:38;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:64:"SELECT * FROM some WHERE MATCH(' "lowered his axe" '); SHOW META";}i:39;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:3:"his";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"axe";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:40;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:64:"SELECT * FROM all WHERE MATCH(' "lowered his axe" '); SHOW META";}i:41;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=3)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:42;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:68:"SELECT * FROM none WHERE MATCH(' "and lowered his axe" '); SHOW META";}i:43;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"his";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"axe";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:44;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:68:"SELECT * FROM some WHERE MATCH(' "and lowered his axe" '); SHOW META";}i:45;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"his";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"axe";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:46;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:68:"SELECT * FROM all WHERE MATCH(' "and lowered his axe" '); SHOW META";}i:47;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=4)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:48;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:62:"SELECT * FROM none WHERE MATCH(' "tin woodman"/1 '); SHOW META";}i:49;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:50;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:62:"SELECT * FROM some WHERE MATCH(' "tin woodman"/1 '); SHOW META";}i:51;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:52;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:62:"SELECT * FROM all WHERE MATCH(' "tin woodman"/1 '); SHOW META";}i:53;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:54;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:51:"SELECT * FROM none WHERE MATCH(' ^the '); SHOW META";}i:55;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"the";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"5";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:56;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:51:"SELECT * FROM some WHERE MATCH(' ^the '); SHOW META";}i:57;a:3:{s:10:"total_rows";i:7;s:4:"rows";a:6:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:43:"hitlist unavailable, position limit ignored";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"the";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:58;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:51:"SELECT * FROM all WHERE MATCH(' ^the '); SHOW META";}i:59;a:3:{s:10:"total_rows";i:7;s:4:"rows";a:6:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:43:"hitlist unavailable, position limit ignored";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"the";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:60;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:51:"SELECT * FROM none WHERE MATCH(' ^tin '); SHOW META";}i:61;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:62;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:51:"SELECT * FROM some WHERE MATCH(' ^tin '); SHOW META";}i:63;a:3:{s:10:"total_rows";i:7;s:4:"rows";a:6:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:43:"hitlist unavailable, position limit ignored";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:64;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:51:"SELECT * FROM all WHERE MATCH(' ^tin '); SHOW META";}i:65;a:3:{s:10:"total_rows";i:7;s:4:"rows";a:6:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:43:"hitlist unavailable, position limit ignored";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:66;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:53:"SELECT * FROM none WHERE MATCH(' basket '); SHOW META";}i:67;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:68;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:53:"SELECT * FROM some WHERE MATCH(' basket '); SHOW META";}i:69;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:70;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:53:"SELECT * FROM all WHERE MATCH(' basket '); SHOW META";}i:71;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:72;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM none WHERE MATCH(' basket$ '); SHOW META";}i:73;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:74;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM some WHERE MATCH(' basket$ '); SHOW META";}i:75;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:5:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:76;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:54:"SELECT * FROM all WHERE MATCH(' basket$ '); SHOW META";}i:77;a:3:{s:10:"total_rows";i:7;s:4:"rows";a:6:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:43:"hitlist unavailable, position limit ignored";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:6:"basket";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:78;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:73:"SELECT * FROM some1 WHERE MATCH(' "and the tree" << Woodman '); SHOW META";}i:79;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:48:"failed to create order node, hitlist unavailable";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:80;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:74:"SELECT * FROM some1 WHERE MATCH(' Tin Woodman "and the tree" '); SHOW META";}i:81;a:3:{s:10:"total_rows";i:10;s:4:"rows";a:9:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=1, nodes=3)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:6;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:7;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:82;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:97:"SELECT * FROM some1 WHERE MATCH(' ZONESPAN:(zoneC,zoneB) Tin Woodman "and the tree" '); SHOW META";}i:83;a:3:{s:10:"total_rows";i:10;s:4:"rows";a:9:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=1, nodes=3)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:3;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:4;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:6;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:7;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:84;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:78:"SELECT * FROM some1 WHERE MATCH(' Woodman NEAR/10 "and the tree" '); SHOW META";}i:85;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=0, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:86;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:63:"SELECT * FROM hit_0 WHERE MATCH(' "teach to feed" '); SHOW META";}i:87;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:5:"teach";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:2:"to";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"2";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:4:"feed";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"fee";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:88;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:63:"SELECT * FROM hit_1 WHERE MATCH(' "teach to feed" '); SHOW META";}i:89;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:5:"teach";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"1";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"1";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:2:"to";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"2";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"2";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:4:"feed";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"fee";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:90;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:61:"SELECT * FROM hit_0 WHERE MATCH(' "to feed and" '); SHOW META";}i:91;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:2:"to";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:4:"feed";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"fee";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"and";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"2";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"2";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:92;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:61:"SELECT * FROM hit_1 WHERE MATCH(' "to feed and" '); SHOW META";}i:93;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:2:"to";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"2";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:4:"feed";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"fee";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"and";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"2";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"2";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:94;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:57:"SELECT * FROM hit_0 WHERE MATCH(' "to feed" '); SHOW META";}i:95;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:2:"to";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:4:"feed";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"fee";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:96;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:57:"SELECT * FROM hit_1 WHERE MATCH(' "to feed" '); SHOW META";}i:97;a:3:{s:10:"total_rows";i:4;s:4:"rows";a:3:{i:0;a:2:{s:13:"Variable_name";s:7:"warning";s:5:"Value";s:68:"can't create phrase node, hitlists unavailable (hitlists=1, nodes=2)";}i:1;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:98;a:2:{s:10:"total_rows";i:0;s:8:"sphinxql";s:65:"SELECT * FROM hit_0 WHERE MATCH(' "to windows text" '); SHOW META";}i:99;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"0";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"0";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:2:"to";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"windows";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:6:"window";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:4:"text";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:100;a:3:{s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:65:"SELECT * FROM hit_1 WHERE MATCH(' "to windows text" '); SHOW META";}i:101;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"1";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"1";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:2:"to";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"2";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"windows";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"1";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"1";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:6:"window";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"1";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"1";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:4:"text";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"1";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"1";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:102;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 101, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 201, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:103;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 102, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 202, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:104;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 103, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 203, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:105;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 104, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 204, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:106;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 105, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 205, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:107;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 106, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 206, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:108;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 107, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 207, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:109;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 108, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 208, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:110;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 109, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 209, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:111;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 111, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 211, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:112;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 112, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 212, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:113;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 113, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 213, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:114;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 114, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 214, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:115;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 115, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 215, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:116;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 116, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 216, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:117;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 117, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 217, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:118;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 118, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 218, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:119;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 119, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 219, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:120;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 121, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 221, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:121;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 122, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 222, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:122;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 123, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 223, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:123;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 124, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 224, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:124;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 125, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 225, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:125;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 126, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 226, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:126;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 127, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 227, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:127;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 128, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 228, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:128;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 129, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 229, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:129;a:2:{s:8:"sphinxql";s:209:"insert into some(id, title) values ( 11, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), ( 12, 'The Tin Woodman appeared to think deeply for a moment.' )";s:14:"total_affected";i:2;}i:130;a:2:{s:8:"sphinxql";s:112:"insert into some(id, title) values ( 13, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' )";s:14:"total_affected";i:1;}i:131;a:3:{s:10:"total_rows";i:6;s:4:"rows";a:6:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}i:3;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:4;a:2:{s:2:"id";s:2:"12";s:3:"idd";s:1:"0";}i:5;a:2:{s:2:"id";s:2:"13";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:74:"SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META";}i:132;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"6";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"6";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"6";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"6";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"6";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"6";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:133;a:3:{s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:80:"SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META";}i:134;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"2";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"2";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"2";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:3:"his";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"2";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"2";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"axe";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"2";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"2";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:135;a:3:{s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:84:"SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META";}i:136;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"2";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"2";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"2";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"2";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"2";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"2";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"his";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"2";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"2";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"axe";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"2";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"2";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:137;a:2:{s:8:"sphinxql";s:19:"flush ramchunk some";s:14:"total_affected";i:0;}i:138;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 301, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 401, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:139;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 302, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 402, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:140;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 303, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 403, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:141;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 304, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 404, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:142;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 305, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 405, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:143;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 306, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 406, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:144;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 307, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 407, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:145;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 308, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 408, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:146;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 309, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 409, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:147;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 311, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 411, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:148;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 312, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 412, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:149;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 313, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 413, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:150;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 314, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 414, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:151;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 315, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 415, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:152;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 316, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 416, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:153;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 317, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 417, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:154;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 318, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 418, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:155;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 319, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 419, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:156;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 321, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 421, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:157;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 322, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 422, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:158;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 323, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 423, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:159;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 324, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 424, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:160;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 325, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 425, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:161;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 326, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 426, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:162;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 327, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 427, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:163;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 328, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 428, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:164;a:2:{s:8:"sphinxql";s:139:"insert into some(id, title) values ( 329, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 429, 'wine white 1977,1978,1979,1980,1981,1982' )";s:14:"total_affected";i:2;}i:165;a:2:{s:8:"sphinxql";s:209:"insert into some(id, title) values ( 21, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), ( 22, 'The Tin Woodman appeared to think deeply for a moment.' )";s:14:"total_affected";i:2;}i:166;a:2:{s:8:"sphinxql";s:112:"insert into some(id, title) values ( 23, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' )";s:14:"total_affected";i:1;}i:167;a:2:{s:8:"sphinxql";s:19:"flush ramchunk some";s:14:"total_affected";i:0;}i:168;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:9:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}i:3;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:4;a:2:{s:2:"id";s:2:"12";s:3:"idd";s:1:"0";}i:5;a:2:{s:2:"id";s:2:"13";s:3:"idd";s:1:"0";}i:6;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}i:7;a:2:{s:2:"id";s:2:"22";s:3:"idd";s:1:"0";}i:8;a:2:{s:2:"id";s:2:"23";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:74:"SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META";}i:169;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"9";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"9";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"9";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"9";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"9";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"9";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:170;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:80:"SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META";}i:171;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:3:"his";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"axe";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"3";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:172;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:84:"SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META";}i:173;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"his";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"3";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"3";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"axe";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"3";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:174;a:2:{s:8:"sphinxql";s:33:"OPTIMIZE INDEX some option sync=1";s:14:"total_affected";i:0;}i:175;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:9:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"idd";s:1:"0";}i:3;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:4;a:2:{s:2:"id";s:2:"12";s:3:"idd";s:1:"0";}i:5;a:2:{s:2:"id";s:2:"13";s:3:"idd";s:1:"0";}i:6;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}i:7;a:2:{s:2:"id";s:2:"22";s:3:"idd";s:1:"0";}i:8;a:2:{s:2:"id";s:2:"23";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:74:"SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META";}i:176;a:3:{s:10:"total_rows";i:9;s:4:"rows";a:8:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"9";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"9";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"tin";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"9";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"9";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"woodman";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"9";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"9";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:177;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:80:"SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META";}i:178;a:3:{s:10:"total_rows";i:12;s:4:"rows";a:11:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:7:"lowered";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:3:"his";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"axe";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"3";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}i:179;a:3:{s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"idd";s:1:"0";}i:1;a:2:{s:2:"id";s:2:"11";s:3:"idd";s:1:"0";}i:2;a:2:{s:2:"id";s:2:"21";s:3:"idd";s:1:"0";}}s:8:"sphinxql";s:84:"SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META";}i:180;a:3:{s:10:"total_rows";i:15;s:4:"rows";a:14:{i:0;a:2:{s:13:"Variable_name";s:5:"total";s:5:"Value";s:1:"3";}i:1;a:2:{s:13:"Variable_name";s:11:"total_found";s:5:"Value";s:1:"3";}i:2;a:2:{s:13:"Variable_name";s:10:"keyword[0]";s:5:"Value";s:3:"and";}i:3;a:2:{s:13:"Variable_name";s:7:"docs[0]";s:5:"Value";s:1:"3";}i:4;a:2:{s:13:"Variable_name";s:7:"hits[0]";s:5:"Value";s:1:"3";}i:5;a:2:{s:13:"Variable_name";s:10:"keyword[1]";s:5:"Value";s:7:"lowered";}i:6;a:2:{s:13:"Variable_name";s:7:"docs[1]";s:5:"Value";s:1:"3";}i:7;a:2:{s:13:"Variable_name";s:7:"hits[1]";s:5:"Value";s:1:"3";}i:8;a:2:{s:13:"Variable_name";s:10:"keyword[2]";s:5:"Value";s:3:"his";}i:9;a:2:{s:13:"Variable_name";s:7:"docs[2]";s:5:"Value";s:1:"3";}i:10;a:2:{s:13:"Variable_name";s:7:"hits[2]";s:5:"Value";s:1:"3";}i:11;a:2:{s:13:"Variable_name";s:10:"keyword[3]";s:5:"Value";s:3:"axe";}i:12;a:2:{s:13:"Variable_name";s:7:"docs[3]";s:5:"Value";s:1:"3";}i:13;a:2:{s:13:"Variable_name";s:7:"hits[3]";s:5:"Value";s:1:"3";}}s:8:"sphinxql";s:52:" SHOW META /* result 2 of previous multistatement */";}}} \ No newline at end of file diff --git a/test/test_408/test.xml b/test/test_408/test.xml new file mode 100644 index 0000000000..6a421a9882 --- /dev/null +++ b/test/test_408/test.xml @@ -0,0 +1,250 @@ + + + +hitless RT indexes + + + + + +common +{ + lemmatizer_base = lemmatizer_base +} + +searchd +{ + +} + +index none +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /none +} + +index some +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /some + + hitless_words = /words1.txt /words2.txt +} + +index all +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /all + + hitless_words = all +} + +index some1 +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /some1 + + hitless_words = /words1.txt /words2.txt + html_strip = 1 + index_sp = 1 + index_zones = zone* +} + +index hit_0 +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /hit_0 + morphology = lemmatize_en_all +} + +index hit_1 +{ + type = rt + rt_field = title + rt_attr_uint = idd + path = /hit_1 + morphology = lemmatize_en_all + hitless_words = /words3.txt +} + + + + + insert into none(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + + insert into some(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + + insert into all(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + + insert into some1(id, title) values ( 1, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), + ( 2, 'The Tin Woodman appeared to think deeply for a moment.' ), + ( 3, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + + insert into hit_0(id, title) values (1, 'protest, to teach, to feed, and'), (2, 'to and windows text') + insert into hit_1(id, title) values (1, 'protest, to teach, to feed, and'), (2, 'to and windows text') + + + SELECT * FROM none WHERE MATCH(' tin woodman '); SHOW META + SELECT * FROM some WHERE MATCH(' tin woodman '); SHOW META + SELECT * FROM all WHERE MATCH(' tin woodman '); SHOW META + + SELECT * FROM none WHERE MATCH(' lowered '); SHOW META + SELECT * FROM some WHERE MATCH(' lowered '); SHOW META + SELECT * FROM all WHERE MATCH(' lowered '); SHOW META + + + SELECT * FROM none WHERE MATCH(' "tin woodman" '); SHOW META + SELECT * FROM some WHERE MATCH(' "tin woodman" '); SHOW META + SELECT * FROM all WHERE MATCH(' "tin woodman" '); SHOW META + + SELECT * FROM none WHERE MATCH(' "and lowered" '); SHOW META + SELECT * FROM some WHERE MATCH(' "and lowered" '); SHOW META + SELECT * FROM all WHERE MATCH(' "and lowered" '); SHOW META + + SELECT * FROM none WHERE MATCH(' "tin woodman"~2 '); SHOW META + SELECT * FROM some WHERE MATCH(' "tin woodman"~2 '); SHOW META + SELECT * FROM all WHERE MATCH(' "tin woodman"~2 '); SHOW META + + + SELECT * FROM none WHERE MATCH(' "lowered his axe" '); SHOW META + SELECT * FROM some WHERE MATCH(' "lowered his axe" '); SHOW META + SELECT * FROM all WHERE MATCH(' "lowered his axe" '); SHOW META + + SELECT * FROM none WHERE MATCH(' "and lowered his axe" '); SHOW META + SELECT * FROM some WHERE MATCH(' "and lowered his axe" '); SHOW META + SELECT * FROM all WHERE MATCH(' "and lowered his axe" '); SHOW META + + + SELECT * FROM none WHERE MATCH(' "tin woodman"/1 '); SHOW META + SELECT * FROM some WHERE MATCH(' "tin woodman"/1 '); SHOW META + SELECT * FROM all WHERE MATCH(' "tin woodman"/1 '); SHOW META + + + SELECT * FROM none WHERE MATCH(' ^the '); SHOW META + SELECT * FROM some WHERE MATCH(' ^the '); SHOW META + SELECT * FROM all WHERE MATCH(' ^the '); SHOW META + + SELECT * FROM none WHERE MATCH(' ^tin '); SHOW META + SELECT * FROM some WHERE MATCH(' ^tin '); SHOW META + SELECT * FROM all WHERE MATCH(' ^tin '); SHOW META + + SELECT * FROM none WHERE MATCH(' basket '); SHOW META + SELECT * FROM some WHERE MATCH(' basket '); SHOW META + SELECT * FROM all WHERE MATCH(' basket '); SHOW META + + SELECT * FROM none WHERE MATCH(' basket$ '); SHOW META + SELECT * FROM some WHERE MATCH(' basket$ '); SHOW META + SELECT * FROM all WHERE MATCH(' basket$ '); SHOW META + + + SELECT * FROM some1 WHERE MATCH(' "and the tree" << Woodman '); SHOW META + SELECT * FROM some1 WHERE MATCH(' Tin Woodman "and the tree" '); SHOW META + SELECT * FROM some1 WHERE MATCH(' ZONESPAN:(zoneC,zoneB) Tin Woodman "and the tree" '); SHOW META + SELECT * FROM some1 WHERE MATCH(' Woodman NEAR/10 "and the tree" '); SHOW META + + + SELECT * FROM hit_0 WHERE MATCH(' "teach to feed" '); SHOW META + SELECT * FROM hit_1 WHERE MATCH(' "teach to feed" '); SHOW META + SELECT * FROM hit_0 WHERE MATCH(' "to feed and" '); SHOW META + SELECT * FROM hit_1 WHERE MATCH(' "to feed and" '); SHOW META + SELECT * FROM hit_0 WHERE MATCH(' "to feed" '); SHOW META + SELECT * FROM hit_1 WHERE MATCH(' "to feed" '); SHOW META + SELECT * FROM hit_0 WHERE MATCH(' "to windows text" '); SHOW META + SELECT * FROM hit_1 WHERE MATCH(' "to windows text" '); SHOW META + + + insert into some(id, title) values ( 101, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 201, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 102, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 202, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 103, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 203, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 104, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 204, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 105, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 205, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 106, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 206, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 107, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 207, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 108, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 208, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 109, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 209, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 111, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 211, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 112, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 212, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 113, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 213, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 114, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 214, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 115, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 215, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 116, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 216, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 117, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 217, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 118, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 218, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 119, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 219, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 121, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 221, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 122, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 222, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 123, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 223, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 124, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 224, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 125, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 225, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 126, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 226, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 127, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 227, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 128, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 228, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 129, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 229, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 11, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), ( 12, 'The Tin Woodman appeared to think deeply for a moment.' ) + insert into some(id, title) values ( 13, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + + SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META + + + flush ramchunk some + insert into some(id, title) values ( 301, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 401, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 302, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 402, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 303, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 403, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 304, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 404, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 305, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 405, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 306, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 406, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 307, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 407, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 308, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 408, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 309, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 409, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 311, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 411, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 312, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 412, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 313, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 413, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 314, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 414, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 315, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 415, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 316, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 416, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 317, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 417, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 318, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 418, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 319, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 419, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 321, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 421, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 322, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 422, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 323, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 423, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 324, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 424, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 325, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 425, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 326, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 426, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 327, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 427, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 328, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 428, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 329, 'wine white 1977,1978,1979,1980,1981,1982' ), ( 429, 'wine white 1977,1978,1979,1980,1981,1982' ) + insert into some(id, title) values ( 21, 'The Tin Woodman gave a sigh of satisfaction and lowered his axe, which he leaned against the tree.' ), ( 22, 'The Tin Woodman appeared to think deeply for a moment.' ) + insert into some(id, title) values ( 23, 'The Tin Woodman had asked Dorothy to put the oil-can in her basket.' ) + flush ramchunk some + + SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META + + + OPTIMIZE INDEX some option sync=1 + SELECT * FROM some WHERE MATCH(' tin woodman ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "lowered his axe" ') order by id asc; SHOW META + SELECT * FROM some WHERE MATCH(' "and lowered his axe" ') order by id asc; SHOW META + + + diff --git a/test/test_408/words1.txt b/test/test_408/words1.txt new file mode 100644 index 0000000000..68db1d6188 --- /dev/null +++ b/test/test_408/words1.txt @@ -0,0 +1,3 @@ +a +the +and diff --git a/test/test_408/words2.txt b/test/test_408/words2.txt new file mode 100644 index 0000000000..d5080e52bf --- /dev/null +++ b/test/test_408/words2.txt @@ -0,0 +1,3 @@ +of +tin +woodman diff --git a/test/test_408/words3.txt b/test/test_408/words3.txt new file mode 100644 index 0000000000..bf3efa02f7 --- /dev/null +++ b/test/test_408/words3.txt @@ -0,0 +1 @@ +to