Recientemente, necesitaba implementar una bĂşsqueda por el comienzo de una cadena, de hecho WHERE name LIKE '%'
. Fue una bĂşsqueda por el nombre de los sĂmbolos de intercambio (AAPL, AMZN, EUR / USD, etc.). QuerĂa que la bĂşsqueda funcionara rápidamente y no volviera a cargar la base de datos. Como resultado, lleguĂ© a la implementaciĂłn de la bĂşsqueda de árbol en la memoria y les contarĂ© sobre esto.
55000 ( ). . , .
. , BTree, ( , , , trie), — . , .
. , .
.
, , . , , :
AAA (BetaShares Australian High Interest Cash ETF, ASX),
AAA (All Active Asset Capital LTD, LSE).
Index.Data , Index.Data AAA.
SearchIndex.Data
. , .
, .
.
.
.
.
.
, , ã → a.
- ().
, — , .
, Index.Data .
. — Index.Children , ( — ). , AAPL, ( ):
[A], [A], [P], [L]. , . , .
, . , . , .
.
, — . .
(. ).
, .
.
, AA, :
AAL
AAALF
AAAP
AAB
AAP
AAPJ
AAPL
AAPT
, AA. .
WHERE name LIKE '%'
. , , .
“EUR”, “EUR”, “EUR/USD”, “USD/EUR”. , .
, . , “APL”, “APL”, “AAPL” (Apple).
.
“EUR”, “EUR”, “EUR/USD”, “USD/EUR”, : . , “USD/EUR”, : “usd eur”, “eur”. “Grupo Financiero Galicia SA” “Grupo Financiero Galicia SA”, “Financiero Galicia SA”, “Galicia SA”, “SA”.
, 4 .
.
, .
, .
, .
, . .
SearchSymbolIndex
.SearchPopularIndex
(10% ).SearchInstrumentIndex
.
— .
var searchedData []searchindex.SearchData
searchedData = r.SearchSymbolIndex.Search(searchindex.SearchParams{
Text: key,
OutputSize: outputSize,
Matching: searchsymbol.Strict,
})
searchedData = r.SearchPopularIndex.Search(searchindex.SearchParams{
Text: key,
OutputSize: outputSize,
Matching: searchsymbol.Beginning,
StartValues: searchedData,
})
searchedData = r.SearchSymbolIndex.Search(searchindex.SearchParams{
Text: key,
OutputSize: outputSize,
Matching: searchindex.Beginning,
StartValues: searchedData,
})
searchedData = r.SearchInstrumentIndex.Search(searchindex.SearchParams{
Text: key,
OutputSize: outputSize,
Matching: searchindex.Beginning,
StartValues: searchedData,
})
StartValues
— , , , , , (OutputSize
).
searchindex.Strict
— .
searchindex.Beginning
— .
, . 300 . , .
, 55000 2 , . 4 100-200 ( http ), .
Esta búsqueda se utiliza actualmente en la API financiera para desarrolladores, se puede ver un ejemplo en esta página donde puede probarlo en vivo.