Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Ɗaya daga cikin al'amuran yau da kullum a cikin duk aikace-aikacen da muka saba da su shine neman bayanai bisa ga wasu sharuɗɗa da kuma nuna su a cikin tsari mai sauƙi don karantawa. Hakanan ana iya samun ƙarin zaɓuɓɓuka don rarrabuwa, tarawa, da yin rubutu. Aikin shine, a ka'idar, maras muhimmanci, amma lokacin da aka warware shi, yawancin masu haɓakawa suna yin kurakurai da yawa, wanda daga baya ya haifar da rashin aiki. Bari mu yi ƙoƙarin yin la'akari da zaɓuɓɓuka daban-daban don magance wannan matsala kuma mu tsara shawarwari don zaɓar aiwatarwa mafi inganci.

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Zaɓin shafi #1

Mafi sauƙaƙan zaɓin da ke zuwa hankali shine nunin shafi-bi-shafi na sakamakon bincike a mafi kyawun sigar sa.

Fitowar sakamakon bincike da al'amurran da suka shafi aiki
Bari mu ce aikace-aikacenku yana amfani da bayanan bayanai na dangantaka. A wannan yanayin, don nuna bayanai a cikin wannan fom, kuna buƙatar gudanar da tambayoyin SQL guda biyu:

  • Samo layuka don shafin na yanzu.
  • Yi ƙididdige jimlar adadin layukan da suka dace da ma'aunin bincike - wannan wajibi ne don nuna shafuka.

Bari mu dubi tambaya ta farko ta amfani da gwajin bayanan MS SQL a matsayin misali AdventureWorks don uwar garken 2016. Don wannan dalili za mu yi amfani da Tebur Sales.SalesOrderHeader:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Tambayar da ke sama za ta dawo da umarni 50 na farko daga jerin, wanda aka tsara ta hanyar saukowa kwanan wata na ƙari, a wasu kalmomi, umarni 50 na kwanan nan.

Yana gudana da sauri akan ginin gwaji, amma bari mu kalli tsarin aiwatarwa da kididdigar I/O:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Kuna iya samun kididdigar I/O don kowace tambaya ta hanyar gudanar da SET STATISTICS IO ON umarni a cikin lokacin aikin tambaya.

Kamar yadda kuke gani daga tsarin aiwatarwa, zaɓin da ya fi dacewa da albarkatu shine a daidaita duk layuka na teburin tushen ta kwanan wata da aka ƙara. Kuma matsalar ita ce yawancin layuka suna bayyana a cikin tebur, "mafi wuya" za a daidaita. A aikace, ya kamata a guji irin waɗannan yanayi, don haka bari mu ƙara maƙasudi zuwa ranar ƙari kuma mu ga ko amfani da albarkatu ya canza:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Babu shakka ya sami kyau sosai. Amma an magance duk matsalolin? Bari mu canza tambaya don neman oda inda jimillar farashin kaya ya wuce $100:

SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Muna da yanayi mai ban dariya: shirin tambayar bai fi na baya muni ba, amma ainihin adadin karatun ma'ana ya kusan sau biyu girma kamar tare da cikakken sikanin tebur. Akwai mafita - idan muka yi kididdigar tatsuniyoyi daga maƙasudin da ke akwai kuma muka ƙara jimlar farashin kaya a matsayin filin na biyu, za mu sake samun ma'ana 165:

CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);

Ana iya ci gaba da wannan jerin misalai na dogon lokaci, amma manyan tunani guda biyu da nake son bayyanawa a nan su ne:

  • Ƙara kowane sabon ma'auni ko tsarin tsari zuwa tambayar nema na iya yin tasiri mai mahimmanci akan saurin binciken.
  • Amma idan muna buƙatar cire ɓangaren bayanan kawai, kuma ba duk sakamakon da ya dace da sharuɗɗan bincike ba, akwai hanyoyi da yawa don inganta irin wannan tambaya.

Yanzu bari mu matsa zuwa tambaya ta biyu da aka ambata a farkon farawa - wacce ke ƙidaya adadin bayanan da suka gamsar da ma'aunin bincike. Mu dauki misali guda - neman odar da ta haura $100:

SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100

Idan aka ba da fihirisar haɗaɗɗiyar da aka nuna a sama, mun sami:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Gaskiyar cewa tambayar ta ratsa cikin duka fihirisar ba abin mamaki bane, tunda filin SubTotal baya cikin matsayi na farko, don haka tambayar ba zata iya amfani da ita ba. Ana magance matsalar ta hanyar ƙara wani fihirisa akan filin SubTotal, kuma a sakamakon haka yana ba da karatun ma'ana guda 48 kawai.

Kuna iya ba da ƴan ƙarin misalan buƙatun don kirga adadi, amma ainihin abin ya kasance iri ɗaya: karbar wani yanki na bayanai da kirga jimillar adadin buƙatun mabanbanta biyu ne, kuma kowanne yana buƙatar matakansa don ingantawa. Gabaɗaya, ba za ku sami damar samun haɗaɗɗun fihirisa waɗanda ke aiki daidai da kyau ga tambayoyin biyu ba.

Saboda haka, ɗayan mahimman buƙatun da ya kamata a fayyace yayin haɓaka irin wannan hanyar bincike shine ko yana da mahimmanci ga kasuwanci don ganin adadin abubuwan da aka samu. Yana faruwa sau da yawa cewa a'a. Kuma kewayawa ta takamaiman lambobi na shafi, a ganina, mafita ce mai ƙunƙunciyar iyaka, tunda yawancin abubuwan da ke faruwa suna kama da "je zuwa shafi na gaba."

Zaɓin shafi #2

Bari mu ɗauka cewa masu amfani ba su damu da sanin jimlar adadin abubuwan da aka samo ba. Bari mu yi ƙoƙari mu sauƙaƙe shafin bincike:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki
A gaskiya, kawai abin da ya canza shi ne cewa babu wata hanya ta kewaya zuwa takamaiman lambobin shafi, kuma yanzu wannan tebur ba ya buƙatar sanin adadin adadin don nunawa. Amma tambaya ta taso - ta yaya tebur zai san idan akwai bayanai don shafi na gaba (domin nuna daidai hanyar haɗin "Next")?

Amsar ita ce mai sauƙi: za ku iya karantawa daga bayanan bayanai guda ɗaya fiye da yadda ake buƙata don nunawa, kuma kasancewar wannan "ƙarin" rikodin zai nuna ko akwai wani sashi na gaba. Ta wannan hanyar, kawai kuna buƙatar gudanar da buƙatu ɗaya kawai don samun shafi ɗaya na bayanai, wanda ke haɓaka aiki sosai kuma yana sauƙaƙa don tallafawa irin wannan aikin. A cikin aikina, akwai wani lamari lokacin da ƙin ƙidayar jimlar adadin bayanan ya hanzarta isar da sakamako da sau 4-5.

Akwai zaɓuɓɓukan mu'amala da masu amfani da yawa don wannan hanyar: "baya" da "gaba" umarni, kamar yadda a cikin misalin da ke sama, maɓallin "load more", wanda kawai yana ƙara sabon sashi zuwa sakamakon da aka nuna, "gungurawa marar iyaka", wanda ke aiki. akan ka'idar "Load more" ", amma siginar don samun sashi na gaba shine mai amfani ya gungura duk sakamakon da aka nuna zuwa ƙarshe. Ko da menene mafita na gani, ka'idar samar da bayanai ta kasance iri ɗaya.

Nuances na aiwatar da paging

Duk misalan tambaya da aka bayar a sama suna amfani da hanyar “offset + count”, lokacin da tambayar da kanta ta fayyace tsarin layin sakamako da layuka nawa ake buƙatar dawo dasu. Da farko, bari mu duba yadda mafi kyau don tsara siga wucewa a cikin wannan yanayin. A aikace, na ci karo da hanyoyi da yawa:

  • Serial number na shafin da aka nema (pageIndex), girman shafi (Girman shafi).
  • Serial number na farkon rikodin da za a mayar (startIndex), matsakaicin adadin rikodin a cikin sakamakon (ƙidaya).
  • Lambar jeri na rikodin farko da za a mayar (startIndex), jerin adadin rikodin ƙarshe da za a mayar (endIndex).

A kallo na farko yana iya zama kamar wannan na farko ne wanda babu bambanci. Amma wannan ba haka ba ne - mafi dacewa kuma zaɓi na duniya shine na biyu (startIndex, ƙidaya). Akwai dalilai da yawa akan hakan:

  • Don tsarin tantance shigarwar +1 da aka bayar a sama, zaɓi na farko tare da fihirisar shafi da girman shafi ba shi da daɗi. Misali, muna son nuna posts 50 a kowane shafi. Dangane da algorithm na sama, kuna buƙatar karanta ƙarin rikodin fiye da buƙata. Idan ba a aiwatar da wannan "+1" akan uwar garken ba, ya zama cewa don shafin farko dole ne mu nemi bayanan daga 1 zuwa 51, na biyu - daga 51 zuwa 101, da sauransu. Idan ka ƙididdige girman shafi na 51 kuma ka ƙara shafin Index, to shafi na biyu zai dawo daga 52 zuwa 102, da dai sauransu. Saboda haka, a cikin zaɓi na farko, hanya ɗaya tilo don aiwatar da maɓalli da kyau don zuwa shafi na gaba shine sabar uwar garken ta sake karanta layin “ƙarin”, wanda zai zama ɓatanci sosai.
  • Zaɓin na uku ba shi da ma'ana kwata-kwata, tunda don gudanar da tambayoyi a yawancin rumbun adana bayanai har yanzu kuna buƙatar wuce ƙidayar maimakon maƙasudin rikodin ƙarshe. Rage jigon farawa daga ƙarshen Index yana iya zama aiki mai sauƙi na lissafi, amma yana da girma a nan.

Yanzu ya kamata mu bayyana rashin amfanin aiwatar da shafi ta hanyar "offset + quantity":

  • Maido da kowane shafi na gaba zai kasance mafi tsada da hankali fiye da na baya, saboda har yanzu ma'aunin bayanai zai buƙaci a bi duk bayanan "daga farko" bisa ga ma'aunin bincike da rarrabawa, sannan a tsaya a guntun da ake so.
  • Ba duk DBMSs ne ke iya tallafawa wannan hanyar ba.

Akwai madadin, amma kuma ajizai ne. Na farko daga cikin waɗannan hanyoyin ana kiransa "keyset paging" ko "hanyar neman" kuma shine kamar haka: bayan karɓar wani yanki, zaku iya tunawa da ƙimar filin a cikin rikodin ƙarshe akan shafin, sannan kuyi amfani da su don samu. kashi na gaba. Misali, mun gudanar da tambaya mai zuwa:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Kuma a cikin rikodin ƙarshe mun sami ƙimar odar kwanan wata '2014-06-29'. Sannan don samun shafi na gaba zaku iya gwada yin wannan:

SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Matsalar ita ce OrderDate filin da ba na musamman ba ne kuma yanayin da aka ƙayyade a sama yana iya rasa yawancin layuka da ake buƙata. Don ƙara rashin tabbas ga wannan tambayar, kuna buƙatar ƙara filin musamman zuwa yanayin ( ɗauka cewa 75074 shine ƙimar ƙarshe na maɓallin farko daga ɓangaren farko):

SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
   OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Wannan zaɓin zai yi aiki daidai, amma gabaɗaya zai yi wahala haɓakawa tunda yanayin ya ƙunshi ma'aikacin OR. Idan darajar maɓalli na farko yana ƙaruwa yayin da OrderDate ke ƙaruwa, to ana iya sauƙaƙa yanayin ta barin tace kawai ta SalesOrderID. Amma idan babu wani m dangantaka tsakanin dabi'u na farko key da filin da aka jera da sakamakon, wannan OR ba za a iya kauce masa a mafi DBMSs. Banda da na sani shine PostgreSQL, wanda ke goyan bayan kwatancen tuple, kuma ana iya rubuta yanayin sama a matsayin "INA (OrderDate, SalesOrderID) <('2014-06-29', 75074)". Idan aka ba da maɓalli mai haɗe tare da waɗannan fagage biyu, tambaya kamar wannan yakamata ta kasance mai sauƙi.

Za a iya samun madaidaicin hanya ta biyu, misali, a cikin ElasticSearch gungurawa API ko Cosmos DB - lokacin da buƙata, ban da bayanai, ta dawo da mai ganowa na musamman wanda da shi zaku iya samun ɓangaren bayanai na gaba. Idan wannan mai gano yana da tsawon rayuwa mara iyaka (kamar a cikin Comsos DB), to wannan babbar hanya ce ta aiwatar da rubutun tare da jeri-jeri tsakanin shafuka (zaɓi #2 da aka ambata a sama). Yiwuwar rashin amfaninsa: ba a goyan bayansa a cikin duk DBMSs; Sakamakon gano chunk na gaba na iya samun iyakataccen rayuwa, wanda gabaɗaya bai dace da aiwatar da hulɗar mai amfani ba (kamar API ɗin ElasticSearch gungurawa).

Hadadden tacewa

Bari mu kara dagula aikin. A ce akwai buƙatar aiwatar da abin da ake kira binciken fuska, wanda ya saba da kowa daga shagunan kan layi. Misalan da ke sama bisa teburin umarni ba su da kwatance sosai a wannan yanayin, don haka bari mu canza zuwa teburin samfur daga bayanan AdventureWorks:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki
Menene ra'ayin da ke tattare da binciken fuskar fuska? Gaskiyar ita ce, ga kowane nau'in tacewa ana nuna adadin bayanan da suka dace da wannan ma'auni la'akari da tacewa da aka zaɓa a cikin duk sauran rukunan.

Alal misali, idan muka zaɓi nau'in Kekuna da launi Black a cikin wannan misali, tebur zai nuna kawai baƙar fata, amma:

  • Ga kowane ma'auni a cikin rukunin Rukunin, za a nuna adadin samfuran daga wannan rukunin cikin baki.
  • Ga kowane ma'auni na rukunin "Launuka", za a nuna adadin kekuna na wannan launi.

Ga misali na fitowar sakamako don irin waɗannan yanayi:

Fitowar sakamakon bincike da al'amurran da suka shafi aiki
Idan kuma kun duba sashin "Tsafi", tebur kuma zai nuna baƙar fata da ke cikin hannun jari. Hakanan za'a sake ƙididdige adadin samfuran baƙar fata a cikin sashin "Launi" bisa ga sababbin yanayi, kawai a cikin sashin "Categories" babu abin da zai canza ... Ina fatan waɗannan misalan sun isa su fahimci yanayin binciken da aka saba fuskanta.

Yanzu bari mu yi tunanin yadda za a iya aiwatar da wannan bisa tushen dangantaka. Kowane rukuni na ma'auni, kamar Rukuni da Launi, zai buƙaci tambaya daban:

SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
  INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC

Fitowar sakamakon bincike da al'amurran da suka shafi aiki

SELECT Color, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC

Fitowar sakamakon bincike da al'amurran da suka shafi aiki
Menene laifin wannan maganin? Abu ne mai sauqi qwarai - ba shi da ma'auni da kyau. Kowace sashin tacewa yana buƙatar tambaya daban don ƙididdige adadi, kuma waɗannan tambayoyin ba su fi sauƙi ba. A cikin shagunan kan layi, wasu nau'ikan na iya samun sassan tacewa dozin da yawa, wanda zai iya zama babban batun aiki.

Yawancin lokaci bayan waɗannan maganganun ana ba ni wasu mafita, wato:

  • Haɗa duk ƙididdiga masu yawa zuwa tambaya ɗaya. A zahiri wannan yana yiwuwa ta amfani da kalmar UNION, amma ba zai taimaka aiki da yawa ba - bayanan za su iya aiwatar da kowane guntu daga karce.
  • Yawan cache. Wannan ana ba ni shawarar kusan duk lokacin da na kwatanta matsala. Abin lura shi ne cewa wannan gabaɗaya ba zai yiwu ba. Bari mu ce muna da "fuskoki" guda 10, kowannensu yana da dabi'u 5. Wannan yanayin "madaidaici" ne sosai idan aka kwatanta da abin da ake iya gani a cikin shagunan kan layi iri ɗaya. Zaɓin kashi ɗaya na facet yana rinjayar adadi a cikin wasu 9, a wasu kalmomi, ga kowane haɗuwa na ma'auni na iya zama daban-daban. A cikin misalinmu, akwai jimillar ma'auni guda 50 da mai amfani zai iya zaɓa, don haka, za a sami yuwuwar haɗuwa guda 250. Babu isasshen ƙwaƙwalwar ajiya ko lokacin da za a cika irin wannan tarin bayanai. Anan zaku iya ƙin yarda kuma ku faɗi cewa ba duk haɗuwa bane na gaske kuma mai amfani da wuya ya zaɓi fiye da ma'auni 5-10. Na'am, yana yiwuwa a yi lallausan loda da cache adadin kawai abin da aka taɓa zaɓa, amma mafi yawan zaɓin da ake samu, ƙarancin irin wannan cache ɗin zai kasance kuma ana iya lura da matsalolin lokacin amsawa (musamman idan saitin bayanai yana canzawa akai-akai).

Abin farin ciki, irin wannan matsalar ta daɗe tana samun ingantattun hanyoyin magancewa waɗanda ke aiki bisa ga ɗimbin bayanai. Ga kowane ɗayan waɗannan zaɓuɓɓukan, yana da ma'ana don raba sake lissafin fuskoki da karɓar shafin sakamako zuwa kira guda biyu masu daidaitawa zuwa uwar garken da tsara ƙirar mai amfani ta yadda zazzage bayanai ta fuskoki "ba ya tsoma baki" tare da nunin sakamakon bincike.

  • Kira cikakken lissafin “fuskoki” da wuya sosai. Misali, kar a sake lissafin komai a duk lokacin da ka'idojin bincike suka canza, amma a maimakon haka nemo adadin sakamakon da ya dace da yanayin yanzu kuma ya sa mai amfani ya nuna su - "An samu bayanan 1425, nuna?" Mai amfani na iya ci gaba da canza sharuddan bincike ko danna maɓallin “nuna”. A cikin akwati na biyu kawai za a aiwatar da duk buƙatun don samun sakamako da ƙididdige ƙididdiga akan duk "fuskoki". A wannan yanayin, kamar yadda kuke gani cikin sauƙi, za ku yi hulɗa da buƙatun don samun jimlar adadin sakamako da inganta shi. Ana iya samun wannan hanyar a cikin ƙananan kantunan kan layi da yawa. Babu shakka, wannan ba panacea ba ne ga wannan matsala, amma a cikin lokuta masu sauƙi zai iya zama kyakkyawan sulhu.
  • Yi amfani da injunan bincike don nemo sakamako da ƙidaya fuskoki, kamar Solr, ElasticSearch, Sphinx da sauransu. Dukkanin su an tsara su ne don gina "fuskoki" kuma suna yin wannan da kyau sosai saboda inverted index. Yadda injunan bincike ke aiki, me yasa a cikin irin waɗannan lokuta sun fi tasiri fiye da maƙasudin bayanai na gaba ɗaya, waɗanne ayyuka da tarkace akwai - wannan batu ne don wani labarin dabam. Anan ina so in jawo hankalin ku ga gaskiyar cewa injin bincike ba zai iya zama mai maye gurbin babban ma'ajiyar bayanai ba, ana amfani da shi azaman ƙari: duk wani canje-canje a cikin babban bayanan da ya dace don bincike yana aiki tare cikin ma'aunin bincike; Injin bincike yakan yi hulɗa tare da injin bincike kawai kuma baya shiga babban rumbun adana bayanai. Ɗayan mahimman mahimman bayanai anan shine yadda ake tsara wannan aiki tare cikin dogaro. Duk ya dogara da bukatun "lokacin amsawa". Idan lokaci tsakanin canji a cikin babban bayanan bayanai da "bayyanarwa" a cikin binciken ba shi da mahimmanci, za ku iya ƙirƙirar sabis wanda ke neman bayanan da aka canza kwanan nan kowane 'yan mintoci kaɗan kuma ya nuna su. Idan kuna son mafi ƙarancin lokacin amsawa, zaku iya aiwatar da wani abu kamar akwatin ma'amala don aika sabuntawa zuwa sabis ɗin bincike.

binciken

  1. Aiwatar da shafi na gefen uwar garken babban matsala ne kuma yana da ma'ana kawai don girma cikin sauri ko a sauƙaƙe manyan saitin bayanai. Babu cikakken cikakken girke-girke na yadda ake kimanta "babban" ko "girma mai sauri", amma zan bi wannan hanya:
    • Idan karɓar cikakken tarin bayanai, yin la'akari da lokacin uwar garken da watsawar hanyar sadarwa, ya dace da buƙatun aiki akai-akai, babu wata ma'ana a aiwatar da paging a gefen uwar garken.
    • Ana iya samun yanayin da ba a sa ran matsalolin aiki a nan gaba, tun da akwai ƙananan bayanai, amma tarin bayanai yana ci gaba da girma. Idan wasu saitin bayanai a nan gaba na iya daina gamsar da abin da ya gabata, yana da kyau a fara rubutun nan take.
  2. Idan babu wani takamaiman buƙatu a ɓangaren kasuwancin don nuna jimlar sakamakon ko don nuna lambobin shafi, kuma tsarin ku ba shi da injin bincike, yana da kyau kada ku aiwatar da waɗannan abubuwan kuma kuyi la'akari da zaɓi #2.
  3. Idan akwai takamaiman buƙatu don binciken fuska, kuna da zaɓuɓɓuka biyu ba tare da sadaukar da aikin ba:
    • Kada a sake ƙididdige duk ƙididdiga a duk lokacin da ƙa'idodin bincike suka canza.
    • Yi amfani da injunan bincike kamar Solr, ElasticSearch, Sphinx da sauransu. Amma ya kamata a fahimci cewa ba zai iya zama mai maye gurbin babban rumbun adana bayanai ba, kuma ya kamata a yi amfani da shi azaman ƙari ga babban ajiya don magance matsalolin bincike.
  4. Har ila yau, a yanayin bincike mai fuska, yana da ma'ana a raba dawo da shafin sakamakon binciken da kirga zuwa buƙatun guda biyu masu kama da juna. Ƙididdigar ƙidaya na iya ɗaukar lokaci fiye da samun sakamako, yayin da sakamakon ya fi mahimmanci ga mai amfani.
  5. Idan kuna amfani da bayanan SQL don bincike, duk wani canjin lambar da ke da alaƙa da wannan ɓangaren yakamata a gwada shi da kyau don aiki akan adadin bayanan da suka dace (wuce ƙarar a cikin bayanan rayuwa). Hakanan yana da kyau a yi amfani da saka idanu akan lokacin aiwatar da tambaya akan duk abubuwan da ke cikin bayanan, musamman akan "rayuwa". Ko da komai ya yi kyau tare da tsare-tsaren tambaya a matakin ci gaba, yayin da ƙarar bayanai ke girma, lamarin na iya canzawa sosai.

source: www.habr.com

Add a comment