[{"data":1,"prerenderedAt":2175},["ShallowReactive",2],{"navigation":3,"\u002Fsearch\u002Fsearch-engines":307,"\u002Fsearch\u002Fsearch-engines-surround":2170},{"3.x":4,"2.x":203},[5,32,61,99,121,147,165],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":31},"Getting Started","i-heroicons-star","\u002Fgetting-started","1.getting-started",[11,15,19,23,27],{"title":12,"path":13,"stem":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":16,"path":17,"stem":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":20,"path":21,"stem":22},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":24,"path":25,"stem":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration",{"title":28,"path":29,"stem":30},"Upgrade guide","\u002Fgetting-started\u002Fupgrade-guide","1.getting-started\u002F5.upgrade-guide",false,{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":31},"Resources","i-heroicons-document-text","\u002Fresources","2.resources",[38,41,45,49,53,57],{"title":33,"path":39,"stem":40},"\u002Fresources\u002Fresources","2.resources\u002F1.resources",{"title":42,"path":43,"stem":44},"Fields","\u002Fresources\u002Ffields","2.resources\u002F2.fields",{"title":46,"path":47,"stem":48},"Relationships","\u002Fresources\u002Frelations","2.resources\u002F3.relations",{"title":50,"path":51,"stem":52},"Validation","\u002Fresources\u002Fvalidation","2.resources\u002F4.validation",{"title":54,"path":55,"stem":56},"Perimeter","\u002Fresources\u002Fperimeter","2.resources\u002F5.perimeter",{"title":58,"path":59,"stem":60},"Limits","\u002Fresources\u002Flimits","2.resources\u002F6.limits",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":31},"Search","i-heroicons-magnifying-glass","\u002Fsearch","3.search",[67,71,75,79,83,87,91,95],{"title":68,"path":69,"stem":70},"Search overview","\u002Fsearch\u002Foverview","3.search\u002F1.overview",{"title":72,"path":73,"stem":74},"Search filters","\u002Fsearch\u002Ffilters","3.search\u002F2.filters",{"title":76,"path":77,"stem":78},"Sorts and selects","\u002Fsearch\u002Fsorts-and-selects","3.search\u002F3.sorts-and-selects",{"title":80,"path":81,"stem":82},"Includes and aggregates","\u002Fsearch\u002Fincludes-and-aggregates","3.search\u002F4.includes-and-aggregates",{"title":84,"path":85,"stem":86},"Scopes and instructions","\u002Fsearch\u002Fscopes-and-instructions","3.search\u002F5.scopes-and-instructions",{"title":88,"path":89,"stem":90},"Text search","\u002Fsearch\u002Ftext-search","3.search\u002F6.text-search",{"title":92,"path":93,"stem":94},"Search engines","\u002Fsearch\u002Fsearch-engines","3.search\u002F7.search-engines",{"title":96,"path":97,"stem":98},"Searching outside HTTP","\u002Fsearch\u002Foutside-http","3.search\u002F8.outside-http",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":31},"Writing","i-heroicons-pencil-square","\u002Fwriting","4.writing",[105,109,113,117],{"title":106,"path":107,"stem":108},"Mutate","\u002Fwriting\u002Fmutate","4.writing\u002F1.mutate",{"title":110,"path":111,"stem":112},"Writing relations","\u002Fwriting\u002Frelations","4.writing\u002F2.relations",{"title":114,"path":115,"stem":116},"Versioned rows","\u002Fwriting\u002Fversioned-rows","4.writing\u002F3.versioned-rows",{"title":118,"path":119,"stem":120},"Deleting and restoring","\u002Fwriting\u002Fdeleting","4.writing\u002F4.deleting",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":31},"Actions and Metrics","i-heroicons-bolt","\u002Factions-and-metrics","5.actions-and-metrics",[127,131,135,139,143],{"title":128,"path":129,"stem":130},"Actions","\u002Factions-and-metrics\u002Factions","5.actions-and-metrics\u002F1.actions",{"title":132,"path":133,"stem":134},"Queued Actions","\u002Factions-and-metrics\u002Fqueued-actions","5.actions-and-metrics\u002F2.queued-actions",{"title":136,"path":137,"stem":138},"Confirmation","\u002Factions-and-metrics\u002Fconfirmation","5.actions-and-metrics\u002F3.confirmation",{"title":140,"path":141,"stem":142},"Metrics","\u002Factions-and-metrics\u002Fmetrics","5.actions-and-metrics\u002F4.metrics",{"title":144,"path":145,"stem":146},"Exports","\u002Factions-and-metrics\u002Fexports","5.actions-and-metrics\u002F5.exports",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":31},"Authorization","i-heroicons-lock-closed","\u002Fauthorization","6.authorization",[153,157,161],{"title":154,"path":155,"stem":156},"Policies","\u002Fauthorization\u002Fpolicies","6.authorization\u002F1.policies",{"title":158,"path":159,"stem":160},"Gates","\u002Fauthorization\u002Fgates","6.authorization\u002F2.gates",{"title":162,"path":163,"stem":164},"Decision Cache","\u002Fauthorization\u002Fdecision-cache","6.authorization\u002F3.decision-cache",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":31},"Digging Deeper","i-heroicons-list-bullet","\u002Fdigging-deeper","7.digging-deeper",[171,175,179,183,187,191,195,199],{"title":172,"path":173,"stem":174},"Details","\u002Fdigging-deeper\u002Fdetails","7.digging-deeper\u002F1.details",{"title":176,"path":177,"stem":178},"Events and Hooks","\u002Fdigging-deeper\u002Fevents-and-hooks","7.digging-deeper\u002F2.events-and-hooks",{"title":180,"path":181,"stem":182},"Custom Responses","\u002Fdigging-deeper\u002Fresponses","7.digging-deeper\u002F3.responses",{"title":184,"path":185,"stem":186},"OpenAPI Documentation","\u002Fdigging-deeper\u002Fopenapi","7.digging-deeper\u002F4.openapi",{"title":188,"path":189,"stem":190},"Precognition","\u002Fdigging-deeper\u002Fprecognition","7.digging-deeper\u002F5.precognition",{"title":192,"path":193,"stem":194},"Artisan Commands","\u002Fdigging-deeper\u002Fartisan","7.digging-deeper\u002F6.artisan",{"title":196,"path":197,"stem":198},"Laravel Boost Skill","\u002Fdigging-deeper\u002Fai-skill","7.digging-deeper\u002F7.ai-skill",{"title":200,"path":201,"stem":202},"Translations","\u002Fdigging-deeper\u002Ftranslations","7.digging-deeper\u002F8.translations",[204,215,237,260,297],{"title":6,"icon":7,"path":205,"stem":206,"children":207,"page":31},"\u002F2.x\u002Fgetting-started","2.x\u002F1.getting-started",[208,211],{"title":16,"path":209,"stem":210},"\u002F2.x\u002Fgetting-started\u002Finstallation","2.x\u002F1.getting-started\u002F1.installation",{"title":212,"path":213,"stem":214},"Upgrade Guide","\u002F2.x\u002Fgetting-started\u002Fupgrade-guide","2.x\u002F1.getting-started\u002F2.upgrade-guide",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":31},"Endpoints","i-heroicons-arrow-uturn-left","\u002F2.x\u002Fendpoints","2.x\u002F2.endpoints",[221,224,227,230,233],{"title":172,"path":222,"stem":223},"\u002F2.x\u002Fendpoints\u002Fdetails","2.x\u002F2.endpoints\u002F1.details",{"title":62,"path":225,"stem":226},"\u002F2.x\u002Fendpoints\u002Fsearch","2.x\u002F2.endpoints\u002F2.search",{"title":106,"path":228,"stem":229},"\u002F2.x\u002Fendpoints\u002Fmutate","2.x\u002F2.endpoints\u002F3.mutate",{"title":128,"path":231,"stem":232},"\u002F2.x\u002Fendpoints\u002Factions","2.x\u002F2.endpoints\u002F4.actions",{"title":234,"path":235,"stem":236},"Delete","\u002F2.x\u002Fendpoints\u002Fdelete","2.x\u002F2.endpoints\u002F5.delete",{"title":33,"icon":34,"path":238,"stem":239,"children":240,"page":31},"\u002F2.x\u002Fresources","2.x\u002F3.resources",[241,245,249,252,256],{"title":242,"path":243,"stem":244},"Basics","\u002F2.x\u002Fresources\u002Fbasics","2.x\u002F3.resources\u002F1.basics",{"title":246,"path":247,"stem":248},"Exposed Data","\u002F2.x\u002Fresources\u002Fexposed-data","2.x\u002F3.resources\u002F2.exposed-data",{"title":46,"path":250,"stem":251},"\u002F2.x\u002Fresources\u002Frelationships","2.x\u002F3.resources\u002F3.relationships",{"title":253,"path":254,"stem":255},"Validations","\u002F2.x\u002Fresources\u002Fvalidations","2.x\u002F3.resources\u002F4.validations",{"title":257,"path":258,"stem":259},"Interactions","\u002F2.x\u002Fresources\u002Finteractions","2.x\u002F3.resources\u002F5.interactions",{"title":166,"icon":167,"path":261,"stem":262,"children":263,"page":31},"\u002F2.x\u002Fdigging-deeper","2.x\u002F4.digging-deeper",[264,267,271,274,278,282,286,290,294],{"title":128,"path":265,"stem":266},"\u002F2.x\u002Fdigging-deeper\u002Factions","2.x\u002F4.digging-deeper\u002F1.actions",{"title":268,"path":269,"stem":270},"Hooks","\u002F2.x\u002Fdigging-deeper\u002Fhooks","2.x\u002F4.digging-deeper\u002F2.hooks",{"title":158,"path":272,"stem":273},"\u002F2.x\u002Fdigging-deeper\u002Fgates","2.x\u002F4.digging-deeper\u002F3.gates",{"title":275,"path":276,"stem":277},"Authorizations","\u002F2.x\u002Fdigging-deeper\u002Fauthorizations","2.x\u002F4.digging-deeper\u002F4.authorizations",{"title":279,"path":280,"stem":281},"Full Text Search","\u002F2.x\u002Fdigging-deeper\u002Ffull-text-search","2.x\u002F4.digging-deeper\u002F5.full-text-search",{"title":283,"path":284,"stem":285},"Instructions","\u002F2.x\u002Fdigging-deeper\u002Finstructions","2.x\u002F4.digging-deeper\u002F6.instructions",{"title":287,"path":288,"stem":289},"Responses","\u002F2.x\u002Fdigging-deeper\u002Fresponses","2.x\u002F4.digging-deeper\u002F7.responses",{"title":291,"path":292,"stem":293},"Documentation","\u002F2.x\u002Fdigging-deeper\u002Fdocumentation","2.x\u002F4.digging-deeper\u002F8.documentation",{"title":188,"path":295,"stem":296},"\u002F2.x\u002Fdigging-deeper\u002Fprecognition","2.x\u002F4.digging-deeper\u002F9.precognition",{"title":298,"icon":299,"path":300,"stem":301,"children":302,"page":31},"Integrations","i-lucide-puzzle","\u002F2.x\u002Fintegrations","2.x\u002F5.integrations",[303],{"title":304,"path":305,"stem":306},"Flutter","\u002F2.x\u002Fintegrations\u002Fflutter","2.x\u002F5.integrations\u002F1.flutter",{"id":308,"title":92,"body":309,"description":2163,"extension":2164,"links":2165,"meta":2166,"navigation":460,"path":93,"seo":2167,"sitemap":2168,"stem":94,"__hash__":2169},"docs3x\u002F3.search\u002F7.search-engines.md",{"type":310,"value":311,"toc":2153},"minimark",[312,320,710,916,919,924,1062,1066,1076,1146,1150,1153,1345,1349,1423,1427,1557,1573,1577,1582,1647,1649,1654,2059,2089,2092,2099,2144,2149],[313,314,315,319],"p",{},[316,317,318],"code",{},"ScoutEngine"," runs the text search of a resource on the search engine of its Laravel Scout model. The engine matches the text, applies the filters and the sorts, pages the results and counts them. The package then loads the rows of the page in one SQL query, with the includes, aggregates, selects and gates of the search.",[321,322,328],"pre",{"className":323,"code":324,"filename":325,"language":326,"meta":327,"style":327},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Lomkit\\Rest\\Fields\\Integer;\nuse Lomkit\\Rest\\Fields\\Number;\nuse Lomkit\\Rest\\Text\\Engine\\EngineQuery;\nuse Lomkit\\Rest\\Text\\ScoutEngine;\nuse Lomkit\\Rest\\Text\\TextSearch;\n\npublic function text(): ?TextSearch\n{\n    return ScoutEngine::make()\n        ->filterable([Integer::make('category_id'), Number::make('price'), 'status'])\n        ->sortable(['price'])\n        ->perimeter(\n            fn (EngineQuery $query) => $query->where('team_id', '=', $this->request()->user()->team_id),\n            [Integer::make('team_id')],\n        );\n}\n","app\u002FRest\u002FResources\u002FProductResource.php","php","",[316,329,330,362,384,412,433,455,462,486,492,511,573,591,602,675,698,704],{"__ignoreMap":327},[331,332,335,339,343,347,350,352,354,356,359],"span",{"class":333,"line":334},"line",1,[331,336,338],{"class":337},"sbssI","use",[331,340,342],{"class":341},"sTEyZ"," Lomkit",[331,344,346],{"class":345},"sMK4o","\\",[331,348,349],{"class":341},"Rest",[331,351,346],{"class":345},[331,353,42],{"class":341},[331,355,346],{"class":345},[331,357,358],{"class":341},"Integer",[331,360,361],{"class":345},";\n",[331,363,365,367,369,371,373,375,377,379,382],{"class":333,"line":364},2,[331,366,338],{"class":337},[331,368,342],{"class":341},[331,370,346],{"class":345},[331,372,349],{"class":341},[331,374,346],{"class":345},[331,376,42],{"class":341},[331,378,346],{"class":345},[331,380,381],{"class":341},"Number",[331,383,361],{"class":345},[331,385,387,389,391,393,395,397,400,402,405,407,410],{"class":333,"line":386},3,[331,388,338],{"class":337},[331,390,342],{"class":341},[331,392,346],{"class":345},[331,394,349],{"class":341},[331,396,346],{"class":345},[331,398,399],{"class":341},"Text",[331,401,346],{"class":345},[331,403,404],{"class":341},"Engine",[331,406,346],{"class":345},[331,408,409],{"class":341},"EngineQuery",[331,411,361],{"class":345},[331,413,415,417,419,421,423,425,427,429,431],{"class":333,"line":414},4,[331,416,338],{"class":337},[331,418,342],{"class":341},[331,420,346],{"class":345},[331,422,349],{"class":341},[331,424,346],{"class":345},[331,426,399],{"class":341},[331,428,346],{"class":345},[331,430,318],{"class":341},[331,432,361],{"class":345},[331,434,436,438,440,442,444,446,448,450,453],{"class":333,"line":435},5,[331,437,338],{"class":337},[331,439,342],{"class":341},[331,441,346],{"class":345},[331,443,349],{"class":341},[331,445,346],{"class":345},[331,447,399],{"class":341},[331,449,346],{"class":345},[331,451,452],{"class":341},"TextSearch",[331,454,361],{"class":345},[331,456,458],{"class":333,"line":457},6,[331,459,461],{"emptyLinePlaceholder":460},true,"\n",[331,463,465,469,472,476,479,482],{"class":333,"line":464},7,[331,466,468],{"class":467},"spNyl","public",[331,470,471],{"class":467}," function",[331,473,475],{"class":474},"s2Zo4"," text",[331,477,478],{"class":345},"():",[331,480,481],{"class":345}," ?",[331,483,485],{"class":484},"sBMFI","TextSearch\n",[331,487,489],{"class":333,"line":488},8,[331,490,491],{"class":345},"{\n",[331,493,495,499,502,505,508],{"class":333,"line":494},9,[331,496,498],{"class":497},"s7zQu","    return",[331,500,501],{"class":484}," ScoutEngine",[331,503,504],{"class":345},"::",[331,506,507],{"class":474},"make",[331,509,510],{"class":345},"()\n",[331,512,514,517,520,523,525,527,529,532,535,539,541,544,547,549,551,553,555,558,560,562,565,568,570],{"class":333,"line":513},10,[331,515,516],{"class":345},"        ->",[331,518,519],{"class":474},"filterable",[331,521,522],{"class":345},"([",[331,524,358],{"class":484},[331,526,504],{"class":345},[331,528,507],{"class":474},[331,530,531],{"class":345},"(",[331,533,534],{"class":345},"'",[331,536,538],{"class":537},"sfazB","category_id",[331,540,534],{"class":345},[331,542,543],{"class":345},"),",[331,545,546],{"class":484}," Number",[331,548,504],{"class":345},[331,550,507],{"class":474},[331,552,531],{"class":345},[331,554,534],{"class":345},[331,556,557],{"class":537},"price",[331,559,534],{"class":345},[331,561,543],{"class":345},[331,563,564],{"class":345}," '",[331,566,567],{"class":537},"status",[331,569,534],{"class":345},[331,571,572],{"class":345},"])\n",[331,574,576,578,581,583,585,587,589],{"class":333,"line":575},11,[331,577,516],{"class":345},[331,579,580],{"class":474},"sortable",[331,582,522],{"class":345},[331,584,534],{"class":345},[331,586,557],{"class":537},[331,588,534],{"class":345},[331,590,572],{"class":345},[331,592,594,596,599],{"class":333,"line":593},12,[331,595,516],{"class":345},[331,597,598],{"class":474},"perimeter",[331,600,601],{"class":345},"(\n",[331,603,605,608,611,613,616,619,622,625,627,629,632,635,637,639,642,644,647,649,652,654,656,659,662,665,668,670,672],{"class":333,"line":604},13,[331,606,607],{"class":467},"            fn",[331,609,610],{"class":345}," (",[331,612,409],{"class":484},[331,614,615],{"class":345}," $",[331,617,618],{"class":341},"query",[331,620,621],{"class":345},")",[331,623,624],{"class":345}," =>",[331,626,615],{"class":345},[331,628,618],{"class":341},[331,630,631],{"class":345},"->",[331,633,634],{"class":474},"where",[331,636,531],{"class":345},[331,638,534],{"class":345},[331,640,641],{"class":537},"team_id",[331,643,534],{"class":345},[331,645,646],{"class":345},",",[331,648,564],{"class":345},[331,650,651],{"class":537},"=",[331,653,534],{"class":345},[331,655,646],{"class":345},[331,657,658],{"class":345}," $this->",[331,660,661],{"class":474},"request",[331,663,664],{"class":345},"()->",[331,666,667],{"class":474},"user",[331,669,664],{"class":345},[331,671,641],{"class":341},[331,673,674],{"class":345},"),\n",[331,676,678,681,683,685,687,689,691,693,695],{"class":333,"line":677},14,[331,679,680],{"class":345},"            [",[331,682,358],{"class":484},[331,684,504],{"class":345},[331,686,507],{"class":474},[331,688,531],{"class":345},[331,690,534],{"class":345},[331,692,641],{"class":537},[331,694,534],{"class":345},[331,696,697],{"class":345},")],\n",[331,699,701],{"class":333,"line":700},15,[331,702,703],{"class":345},"        );\n",[331,705,707],{"class":333,"line":706},16,[331,708,709],{"class":345},"}\n",[321,711,716],{"className":712,"code":713,"filename":714,"language":715,"meta":327,"style":327},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"search\": {\n    \"text\": {\"value\": \"desk lamp\"},\n    \"filters\": [{\"field\": \"category_id\", \"operator\": \"in\", \"value\": [1, 2]}],\n    \"sorts\": [{\"field\": \"price\"}],\n    \"includes\": [{\"relation\": \"category\"}]\n  }\n}\n","POST \u002Fapi\u002Fproducts\u002Fsearch","json",[316,717,718,722,739,774,845,875,907,912],{"__ignoreMap":327},[331,719,720],{"class":333,"line":334},[331,721,491],{"class":345},[331,723,724,727,730,733,736],{"class":333,"line":364},[331,725,726],{"class":345},"  \"",[331,728,729],{"class":467},"search",[331,731,732],{"class":345},"\"",[331,734,735],{"class":345},":",[331,737,738],{"class":345}," {\n",[331,740,741,744,747,749,751,754,756,759,761,763,766,769,771],{"class":333,"line":386},[331,742,743],{"class":345},"    \"",[331,745,746],{"class":484},"text",[331,748,732],{"class":345},[331,750,735],{"class":345},[331,752,753],{"class":345}," {",[331,755,732],{"class":345},[331,757,758],{"class":337},"value",[331,760,732],{"class":345},[331,762,735],{"class":345},[331,764,765],{"class":345}," \"",[331,767,768],{"class":537},"desk lamp",[331,770,732],{"class":345},[331,772,773],{"class":345},"},\n",[331,775,776,778,781,783,785,788,790,793,795,797,799,801,803,805,807,810,812,814,816,819,821,823,825,827,829,831,834,837,839,842],{"class":333,"line":414},[331,777,743],{"class":345},[331,779,780],{"class":484},"filters",[331,782,732],{"class":345},[331,784,735],{"class":345},[331,786,787],{"class":345}," [{",[331,789,732],{"class":345},[331,791,792],{"class":337},"field",[331,794,732],{"class":345},[331,796,735],{"class":345},[331,798,765],{"class":345},[331,800,538],{"class":537},[331,802,732],{"class":345},[331,804,646],{"class":345},[331,806,765],{"class":345},[331,808,809],{"class":337},"operator",[331,811,732],{"class":345},[331,813,735],{"class":345},[331,815,765],{"class":345},[331,817,818],{"class":537},"in",[331,820,732],{"class":345},[331,822,646],{"class":345},[331,824,765],{"class":345},[331,826,758],{"class":337},[331,828,732],{"class":345},[331,830,735],{"class":345},[331,832,833],{"class":345}," [",[331,835,836],{"class":337},"1",[331,838,646],{"class":345},[331,840,841],{"class":337}," 2",[331,843,844],{"class":345},"]}],\n",[331,846,847,849,852,854,856,858,860,862,864,866,868,870,872],{"class":333,"line":435},[331,848,743],{"class":345},[331,850,851],{"class":484},"sorts",[331,853,732],{"class":345},[331,855,735],{"class":345},[331,857,787],{"class":345},[331,859,732],{"class":345},[331,861,792],{"class":337},[331,863,732],{"class":345},[331,865,735],{"class":345},[331,867,765],{"class":345},[331,869,557],{"class":537},[331,871,732],{"class":345},[331,873,874],{"class":345},"}],\n",[331,876,877,879,882,884,886,888,890,893,895,897,899,902,904],{"class":333,"line":457},[331,878,743],{"class":345},[331,880,881],{"class":484},"includes",[331,883,732],{"class":345},[331,885,735],{"class":345},[331,887,787],{"class":345},[331,889,732],{"class":345},[331,891,892],{"class":337},"relation",[331,894,732],{"class":345},[331,896,735],{"class":345},[331,898,765],{"class":345},[331,900,901],{"class":537},"category",[331,903,732],{"class":345},[331,905,906],{"class":345},"}]\n",[331,908,909],{"class":333,"line":464},[331,910,911],{"class":345},"  }\n",[331,913,914],{"class":333,"line":488},[331,915,709],{"class":345},[313,917,918],{},"A blank text, or a text without a letter or a digit, runs the normal SQL search, with its whole grammar.",[920,921,923],"h2",{"id":922},"declaration","Declaration",[925,926,927,959,973,1012,1025,1034,1043,1051],"ul",{},[928,929,930,931,934,935,938,939,938,942,938,945,938,948,938,951,954,955,958],"li",{},"The model uses ",[316,932,933],{},"Laravel\\Scout\\Searchable",", and its engine is a Scout engine or a class that extends one: ",[316,936,937],{},"collection",", ",[316,940,941],{},"database",[316,943,944],{},"meilisearch",[316,946,947],{},"typesense",[316,949,950],{},"algolia",[316,952,953],{},"turbopuffer"," or ",[316,956,957],{},"null",". Another engine is refused, because the package cannot know which filters and sorts it runs.",[928,960,961,964,965,968,969,972],{},[316,962,963],{},"filterable()"," lists the index attributes that clients may filter on: fields, such as ",[316,966,967],{},"Integer::make('category_id')",", or the names of fields of the resource, such as ",[316,970,971],{},"'status'",", which take the type and the operators of that field.",[928,974,975,976,938,979,938,981,938,983,938,986,954,988,991,992,954,995,998,999,938,1002,938,1005,1008,1009,1011],{},"An attribute is an ",[316,977,978],{},"ID",[316,980,358],{},[316,982,381],{},[316,984,985],{},"Boolean",[316,987,399],{},[316,989,990],{},"Enum"," field, without ",[316,993,994],{},"filterUsing()",[316,996,997],{},"sortUsing()",". ",[316,1000,1001],{},"Date",[316,1003,1004],{},"DateTime",[316,1006,1007],{},"Json"," and app types that extend a field type are refused: index a date as a timestamp and declare it as an ",[316,1010,358],{},".",[928,1013,1014,1015,1018,1019,998,1021,1024],{},"A name starts with a letter or ",[316,1016,1017],{},"_"," and holds only letters, digits and ",[316,1020,1017],{},[316,1022,1023],{},"__soft_deleted"," is reserved.",[928,1026,1027,1028,1031,1032,1011],{},"A name that points to a field declared ",[316,1029,1030],{},"selectable(false)"," needs that field to be declared ",[316,1033,963],{},[928,1035,1036,1039,1040,1042],{},[316,1037,1038],{},"sortable()"," names the ",[316,1041,963],{}," attributes that clients may sort on.",[928,1044,1045,1048,1049,1011],{},[316,1046,1047],{},"searchable()"," does not apply to ",[316,1050,318],{},[928,1052,1053,1054,1057,1058,1061],{},"The declaration is checked when the resource is first searched in a request. A missing perimeter, a model without ",[316,1055,1056],{},"Searchable",", another engine, a refused type, a refused name, an attribute declared twice or a sort on an attribute that is not filterable throws ",[316,1059,1060],{},"InvalidTextSearchException",", which names the resource.",[920,1063,1065],{"id":1064},"the-index-perimeter","The index perimeter",[313,1067,1068,1069,954,1072,1075],{},"The index perimeter is required: declare ",[316,1070,1071],{},"perimeter()",[316,1073,1074],{},"withoutPerimeter()",", not both.",[925,1077,1078,1091,1094,1109,1124,1140],{},[928,1079,1080,1081,1083,1084,1086,1087,1090],{},"The closure of ",[316,1082,1071],{}," receives the ",[316,1085,409],{}," of each search and reads the request with ",[316,1088,1089],{},"$this->request()",". Its conditions narrow every search of the resource, its total and its pages, and clients cannot widen them.",[928,1092,1093],{},"Its second argument lists the attributes that only the perimeter uses: clients cannot filter or sort on them.",[928,1095,1096,1097,1101,1102,1105,1106,1108],{},"The rows of a page are loaded by key ",[1098,1099,1100],"strong",{},"without"," ",[316,1103,1104],{},"perimeterQuery()",": the index and its perimeter decide the rows. Declare in ",[316,1107,1071],{}," every condition that keeps rows from some users, on attributes that the index holds.",[928,1110,1111,1112,1115,1116,1119,1120,1123],{},"Keep these attributes in sync with the database: set ",[316,1113,1114],{},"scout.after_commit"," to ",[316,1117,1118],{},"true",", and leave ",[316,1121,1122],{},"scout.queue"," off for a model whose perimeter keeps rows from some users, so that a change reaches the index before the next search.",[928,1125,1126,1129,1130,1132,1133,1135,1136,1139],{},[316,1127,1128],{},"search.text"," matches the attributes that the index searches (with the ",[316,1131,941],{}," and ",[316,1134,937],{}," engines, every key of ",[316,1137,1138],{},"toSearchableArray()","). Index only attributes that every user who can list the resource may read.",[928,1141,1142,1143,1145],{},"Use ",[316,1144,1074],{}," only when every such user may see every indexed row.",[920,1147,1149],{"id":1148},"filters-and-sorts","Filters and sorts",[313,1151,1152],{},"Next to a filled text, the grammar follows the declaration of the engine:",[925,1154,1155,1175,1206,1216,1236,1265,1275,1289,1305,1322],{},[928,1156,1157,1159,1160,1162,1163,1166,1167,1170,1171,1174],{},[316,1158,780],{}," take the ",[316,1161,963],{}," attributes, combined with ",[316,1164,1165],{},"and",". The ",[316,1168,1169],{},"or"," type, ",[316,1172,1173],{},"nested",", relation paths and relation groups give a 422.",[928,1176,1177,938,1179,938,1182,1132,1184,1187,1188,938,1191,938,1194,1132,1197,1200,1201,1132,1203,1205],{},[316,1178,651],{},[316,1180,1181],{},"!=",[316,1183,818],{},[316,1185,1186],{},"not in"," work on every attribute; ",[316,1189,1190],{},">",[316,1192,1193],{},">=",[316,1195,1196],{},"\u003C",[316,1198,1199],{},"\u003C="," on ",[316,1202,358],{},[316,1204,381],{}," attributes, among the operators of the field.",[928,1207,1208,1132,1210,1212,1213,1215],{},[316,1209,818],{},[316,1211,1186],{}," need a list of at least one value. ",[316,1214,957],{}," gives a 422. A number that is not finite gives a 422.",[928,1217,1218,1219,954,1221,1224,1225,1228,1229,1232,1233],{},"Every engine receives filter values as literals. A string that holds a backtick or a colon followed by ",[316,1220,531],{},[316,1222,1223],{},"[ (",", ends with ",[316,1226,1227],{},"*",", is wrapped in double quotes, or is a number written with ",[316,1230,1231],{},"+"," gives ",[316,1234,1235],{},"The search.filters.0.value field holds a value the search engine cannot compare.",[928,1237,1238,1159,1240,1242,1243,1246,1247,1250,1251,998,1254,1257,1258,1261,1262,1264],{},[316,1239,851],{},[316,1241,1038],{}," attributes. ",[316,1244,1245],{},"@relevance"," keeps the order of the engine: it is accepted alone, without ",[316,1248,1249],{},"direction"," or with ",[316,1252,1253],{},"desc",[316,1255,1256],{},"asc"," gives a 422 under ",[316,1259,1260],{},"search.sorts.0.direction",", and ",[316,1263,1245],{}," next to another sort gives a 422.",[928,1266,1267,1270,1271,1274],{},[316,1268,1269],{},"text.mode"," accepts ",[316,1272,1273],{},"words"," only. The engine receives the letters and digits of the text, separated by single spaces: the query syntax of the engine has no effect.",[928,1276,1277,1280,1281,1284,1285,1288],{},[316,1278,1279],{},"scopes"," gives a 422. ",[316,1282,1283],{},"instructions"," takes the instructions that implement ",[316,1286,1287],{},"AppliesToEngine",", see below.",[928,1290,1291,1294,1295,1132,1298,1301,1302,1304],{},[316,1292,1293],{},"trashed"," needs a model that uses ",[316,1296,1297],{},"SoftDeletes",[316,1299,1300],{},"scout.soft_delete"," set to ",[316,1303,1118],{},", otherwise it gives a 422 next to a text.",[928,1306,1307,938,1309,938,1312,1132,1315,1318,1319,1321],{},[316,1308,881],{},[316,1310,1311],{},"aggregates",[316,1313,1314],{},"selects",[316,1316,1317],{},"gates"," are validated and applied as in a SQL search, on the rows of the page. Each include and aggregate applies the ",[316,1320,1104],{}," of its own resource.",[928,1323,1324,1325,938,1328,938,1331,1132,1334,1337,1338,1341,1342,1344],{},"The ",[316,1326,1327],{},"update",[316,1329,1330],{},"delete",[316,1332,1333],{},"restore",[316,1335,1336],{},"forceDelete"," gates of a page row answer ",[316,1339,1340],{},"false"," when ",[316,1343,1104],{}," leaves the row out.",[920,1346,1348],{"id":1347},"pages-and-totals","Pages and totals",[925,1350,1351,1367,1380,1396,1413],{},[928,1352,1353,1354,1132,1357,998,1360,1132,1363,1366],{},"The engine pages the results with ",[316,1355,1356],{},"limit",[316,1358,1359],{},"page",[316,1361,1362],{},"total",[316,1364,1365],{},"last_page"," are the engine's, and the rows keep the order of the engine.",[928,1368,1369,1370,1373,1374,1261,1377,1379],{},"The rows of the page load in one SQL query, by their scout key (",[316,1371,1372],{},"getScoutKeyName()","), with the global scopes and the soft deletes of the model. A row that the index returns and that the database no longer holds, or that a global scope leaves out, is left out of ",[316,1375,1376],{},"data",[316,1378,1362],{}," still counts it.",[928,1381,1382,1383,1386,1387,954,1390,1393,1394,1011],{},"Keys follow ",[316,1384,1385],{},"getScoutKeyType()",": ",[316,1388,1389],{},"int",[316,1391,1392],{},"integer"," gives integer keys, any other type string keys. A model whose scout key is not its primary key declares ",[316,1395,1385],{},[928,1397,1398,1399,938,1402,954,1405,1408,1409,1412],{},"The package builds the Scout query itself: an override of the model's ",[316,1400,1401],{},"search()",[316,1403,1404],{},"getScoutModelsByIds()",[316,1406,1407],{},"queryScoutModelsByIds()"," is not used. ",[316,1410,1411],{},"Resource::paginate()"," serves the SQL searches only.",[928,1414,1415,1418,1419,1422],{},[316,1416,1417],{},"$maxTotal"," does not apply: the page keeps the total of the engine and leaves ",[316,1420,1421],{},"total_capped"," out.",[920,1424,1426],{"id":1425},"engines","Engines",[1428,1429,1430,1442],"table",{},[1431,1432,1433],"thead",{},[1434,1435,1436,1439],"tr",{},[1437,1438,404],"th",{},[1437,1440,1441],{},"Notes",[1443,1444,1445,1467,1500,1521,1536,1548],"tbody",{},[1434,1446,1447,1454],{},[1448,1449,1450,938,1452],"td",{},[316,1451,937],{},[316,1453,941],{},[1448,1455,1456,1457,1459,1460,1462,1463,1466],{},"Every operator and sort, exact totals. On PostgreSQL, Scout's ",[316,1458,941],{}," engine compares every key of ",[316,1461,1138],{}," with ",[316,1464,1465],{},"ilike",": return text columns only there",[1434,1468,1469,1473],{},[1448,1470,1471],{},[316,1472,944],{},[1448,1474,1475,1476,1479,1480,1482,1483,1486,1487,1489,1490,1493,1494,1132,1497],{},"Exact totals up to ",[316,1477,1478],{},"pagination.maxTotalHits"," (1000 by default). Declare the ",[316,1481,963],{}," and perimeter attributes in ",[316,1484,1485],{},"filterableAttributes",", and the ",[316,1488,1038],{}," ones in ",[316,1491,1492],{},"sortableAttributes",", for example with ",[316,1495,1496],{},"scout.meilisearch.index-settings",[316,1498,1499],{},"php artisan scout:sync-index-settings",[1434,1501,1502,1506],{},[1448,1503,1504],{},[316,1505,947],{},[1448,1507,1508,1509,1512,1513,1516,1517,1520],{},"Exact totals. The model needs ",[316,1510,1511],{},"query_by"," in ",[316,1514,1515],{},"scout.typesense.model-settings.\u003Cmodel class>.search-parameters",", or in ",[316,1518,1519],{},"typesenseSearchParameters()",". A page holds at most 250 rows, and a search takes at most 3 sorts",[1434,1522,1523,1527],{},[1448,1524,1525],{},[316,1526,950],{},[1448,1528,1529,1530,1532,1533,1535],{},"Exact totals, no sorts: ",[316,1531,1038],{}," throws, and ",[316,1534,1245],{}," alone is accepted",[1434,1537,1538,1542],{},[1448,1539,1540],{},[316,1541,953],{},[1448,1543,1544,1545,1547],{},"No sorts. A page must end within the first 10,000 results. ",[316,1546,1362],{}," counts the documents that match the filters, not the text",[1434,1549,1550,1554],{},[1448,1551,1552],{},[316,1553,957],{},[1448,1555,1556],{},"An empty page and a total of 0, without SQL query",[313,1558,1559,1560,938,1562,938,1564,954,1566,1568,1569,1572],{},"Meilisearch and Typesense compare filter strings without regard to case: prefer ",[316,1561,358],{},[316,1563,978],{},[316,1565,985],{},[316,1567,990],{}," perimeter attributes. On Meilisearch, Typesense, Algolia and Turbopuffer, a row that a global scope of the model leaves out can be in the index: keep it out with ",[316,1570,1571],{},"shouldBeSearchable()",", or add the condition to the perimeter.",[920,1574,1576],{"id":1575},"engine-queries","Engine queries",[313,1578,1579,1580,735],{},"The perimeter and the instructions receive an ",[316,1581,409],{},[925,1583,1584,1609,1622,1632,1641],{},[928,1585,1586,1589,1590,938,1592,938,1594,938,1596,938,1598,954,1600,998,1602,1132,1605,1608],{},[316,1587,1588],{},"where($attribute, $operator, $value)"," takes ",[316,1591,651],{},[316,1593,1181],{},[316,1595,1196],{},[316,1597,1190],{},[316,1599,1199],{},[316,1601,1193],{},[316,1603,1604],{},"whereIn($attribute, $values)",[316,1606,1607],{},"whereNotIn($attribute, $values)"," take a list.",[928,1610,1611,1612,1614,1615,1618,1619,1011],{},"The attribute must be declared in ",[316,1613,963],{}," or in the perimeter, with this operator. The value is converted to the type of the attribute, a backed enum to its value. Anything else throws ",[316,1616,1617],{},"InvalidEngineQueryException",", a ",[316,1620,1621],{},"LogicException",[928,1623,1624,1625,1628,1629,1631],{},"The conditions add up and never replace each other: two ",[316,1626,1627],{},"whereIn()"," on one attribute keep the values that both lists hold. An empty ",[316,1630,1627],{}," returns an empty page without calling the engine.",[928,1633,1634,1637,1638,1640],{},[316,1635,1636],{},"orderBy($attribute, $direction)"," sorts on a ",[316,1639,1038],{}," attribute.",[928,1642,1643,1646],{},[316,1644,1645],{},"options([...])"," adds options for the engine. An option set again with another value throws, and so do the options that the package sets itself.",[920,1648,283],{"id":1283},[313,1650,1651,1652,735],{},"An instruction runs next to an engine text when it implements ",[316,1653,1287],{},[321,1655,1657],{"className":323,"code":1656,"language":326,"meta":327,"style":327},"use Illuminate\\Database\\Eloquent\\Builder;\nuse Lomkit\\Rest\\Fields\\Number;\nuse Lomkit\\Rest\\Instructions\\AppliesToEngine;\nuse Lomkit\\Rest\\Instructions\\Instruction;\nuse Lomkit\\Rest\\Instructions\\InstructionFields;\nuse Lomkit\\Rest\\Text\\Engine\\EngineQuery;\n\nclass PricedUpTo extends Instruction implements AppliesToEngine\n{\n    public function fields(): array\n    {\n        return [Number::make('max')->rules('required')];\n    }\n\n    public function handle(InstructionFields $fields, Builder $query): void\n    {\n        $query->where('price', '\u003C=', $fields->max);\n    }\n\n    public function handleEngine(InstructionFields $fields, EngineQuery $query): void\n    {\n        $query->where('price', '\u003C=', $fields->max);\n    }\n}\n",[316,1658,1659,1683,1703,1723,1744,1765,1789,1793,1813,1817,1832,1837,1877,1882,1886,1919,1923,1964,1969,1974,2005,2010,2049,2054],{"__ignoreMap":327},[331,1660,1661,1663,1666,1668,1671,1673,1676,1678,1681],{"class":333,"line":334},[331,1662,338],{"class":337},[331,1664,1665],{"class":341}," Illuminate",[331,1667,346],{"class":345},[331,1669,1670],{"class":341},"Database",[331,1672,346],{"class":345},[331,1674,1675],{"class":341},"Eloquent",[331,1677,346],{"class":345},[331,1679,1680],{"class":341},"Builder",[331,1682,361],{"class":345},[331,1684,1685,1687,1689,1691,1693,1695,1697,1699,1701],{"class":333,"line":364},[331,1686,338],{"class":337},[331,1688,342],{"class":341},[331,1690,346],{"class":345},[331,1692,349],{"class":341},[331,1694,346],{"class":345},[331,1696,42],{"class":341},[331,1698,346],{"class":345},[331,1700,381],{"class":341},[331,1702,361],{"class":345},[331,1704,1705,1707,1709,1711,1713,1715,1717,1719,1721],{"class":333,"line":386},[331,1706,338],{"class":337},[331,1708,342],{"class":341},[331,1710,346],{"class":345},[331,1712,349],{"class":341},[331,1714,346],{"class":345},[331,1716,283],{"class":341},[331,1718,346],{"class":345},[331,1720,1287],{"class":341},[331,1722,361],{"class":345},[331,1724,1725,1727,1729,1731,1733,1735,1737,1739,1742],{"class":333,"line":414},[331,1726,338],{"class":337},[331,1728,342],{"class":341},[331,1730,346],{"class":345},[331,1732,349],{"class":341},[331,1734,346],{"class":345},[331,1736,283],{"class":341},[331,1738,346],{"class":345},[331,1740,1741],{"class":341},"Instruction",[331,1743,361],{"class":345},[331,1745,1746,1748,1750,1752,1754,1756,1758,1760,1763],{"class":333,"line":435},[331,1747,338],{"class":337},[331,1749,342],{"class":341},[331,1751,346],{"class":345},[331,1753,349],{"class":341},[331,1755,346],{"class":345},[331,1757,283],{"class":341},[331,1759,346],{"class":345},[331,1761,1762],{"class":341},"InstructionFields",[331,1764,361],{"class":345},[331,1766,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787],{"class":333,"line":457},[331,1768,338],{"class":337},[331,1770,342],{"class":341},[331,1772,346],{"class":345},[331,1774,349],{"class":341},[331,1776,346],{"class":345},[331,1778,399],{"class":341},[331,1780,346],{"class":345},[331,1782,404],{"class":341},[331,1784,346],{"class":345},[331,1786,409],{"class":341},[331,1788,361],{"class":345},[331,1790,1791],{"class":333,"line":464},[331,1792,461],{"emptyLinePlaceholder":460},[331,1794,1795,1798,1801,1804,1807,1810],{"class":333,"line":488},[331,1796,1797],{"class":467},"class",[331,1799,1800],{"class":484}," PricedUpTo",[331,1802,1803],{"class":467}," extends",[331,1805,1806],{"class":484}," Instruction",[331,1808,1809],{"class":467}," implements",[331,1811,1812],{"class":484}," AppliesToEngine\n",[331,1814,1815],{"class":333,"line":494},[331,1816,491],{"class":345},[331,1818,1819,1822,1824,1827,1829],{"class":333,"line":513},[331,1820,1821],{"class":467},"    public",[331,1823,471],{"class":467},[331,1825,1826],{"class":474}," fields",[331,1828,478],{"class":345},[331,1830,1831],{"class":337}," array\n",[331,1833,1834],{"class":333,"line":575},[331,1835,1836],{"class":345},"    {\n",[331,1838,1839,1842,1844,1846,1848,1850,1852,1854,1857,1859,1862,1865,1867,1869,1872,1874],{"class":333,"line":593},[331,1840,1841],{"class":497},"        return",[331,1843,833],{"class":345},[331,1845,381],{"class":484},[331,1847,504],{"class":345},[331,1849,507],{"class":474},[331,1851,531],{"class":345},[331,1853,534],{"class":345},[331,1855,1856],{"class":537},"max",[331,1858,534],{"class":345},[331,1860,1861],{"class":345},")->",[331,1863,1864],{"class":474},"rules",[331,1866,531],{"class":345},[331,1868,534],{"class":345},[331,1870,1871],{"class":537},"required",[331,1873,534],{"class":345},[331,1875,1876],{"class":345},")];\n",[331,1878,1879],{"class":333,"line":604},[331,1880,1881],{"class":345},"    }\n",[331,1883,1884],{"class":333,"line":677},[331,1885,461],{"emptyLinePlaceholder":460},[331,1887,1888,1890,1892,1895,1897,1899,1901,1904,1906,1909,1911,1913,1916],{"class":333,"line":700},[331,1889,1821],{"class":467},[331,1891,471],{"class":467},[331,1893,1894],{"class":474}," handle",[331,1896,531],{"class":345},[331,1898,1762],{"class":484},[331,1900,615],{"class":345},[331,1902,1903],{"class":341},"fields",[331,1905,646],{"class":345},[331,1907,1908],{"class":484}," Builder",[331,1910,615],{"class":345},[331,1912,618],{"class":341},[331,1914,1915],{"class":345},"):",[331,1917,1918],{"class":337}," void\n",[331,1920,1921],{"class":333,"line":706},[331,1922,1836],{"class":345},[331,1924,1926,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961],{"class":333,"line":1925},17,[331,1927,1928],{"class":345},"        $",[331,1930,618],{"class":341},[331,1932,631],{"class":345},[331,1934,634],{"class":474},[331,1936,531],{"class":345},[331,1938,534],{"class":345},[331,1940,557],{"class":537},[331,1942,534],{"class":345},[331,1944,646],{"class":345},[331,1946,564],{"class":345},[331,1948,1199],{"class":537},[331,1950,534],{"class":345},[331,1952,646],{"class":345},[331,1954,615],{"class":345},[331,1956,1903],{"class":341},[331,1958,631],{"class":345},[331,1960,1856],{"class":341},[331,1962,1963],{"class":345},");\n",[331,1965,1967],{"class":333,"line":1966},18,[331,1968,1881],{"class":345},[331,1970,1972],{"class":333,"line":1971},19,[331,1973,461],{"emptyLinePlaceholder":460},[331,1975,1977,1979,1981,1984,1986,1988,1990,1992,1994,1997,1999,2001,2003],{"class":333,"line":1976},20,[331,1978,1821],{"class":467},[331,1980,471],{"class":467},[331,1982,1983],{"class":474}," handleEngine",[331,1985,531],{"class":345},[331,1987,1762],{"class":484},[331,1989,615],{"class":345},[331,1991,1903],{"class":341},[331,1993,646],{"class":345},[331,1995,1996],{"class":484}," EngineQuery",[331,1998,615],{"class":345},[331,2000,618],{"class":341},[331,2002,1915],{"class":345},[331,2004,1918],{"class":337},[331,2006,2008],{"class":333,"line":2007},21,[331,2009,1836],{"class":345},[331,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047],{"class":333,"line":2012},22,[331,2014,1928],{"class":345},[331,2016,618],{"class":341},[331,2018,631],{"class":345},[331,2020,634],{"class":474},[331,2022,531],{"class":345},[331,2024,534],{"class":345},[331,2026,557],{"class":537},[331,2028,534],{"class":345},[331,2030,646],{"class":345},[331,2032,564],{"class":345},[331,2034,1199],{"class":537},[331,2036,534],{"class":345},[331,2038,646],{"class":345},[331,2040,615],{"class":345},[331,2042,1903],{"class":341},[331,2044,631],{"class":345},[331,2046,1856],{"class":341},[331,2048,1963],{"class":345},[331,2050,2052],{"class":333,"line":2051},23,[331,2053,1881],{"class":345},[331,2055,2057],{"class":333,"line":2056},24,[331,2058,709],{"class":345},[925,2060,2061,2064,2078],{},[928,2062,2063],{},"Another instruction gives a 422 next to an engine text.",[928,2065,2066,2067,2069,2070,2073,2074,2077],{},"An ",[316,2068,1287],{}," instruction that does not override ",[316,2071,2072],{},"handle()"," only applies to engine text searches: it gives a 422 in a SQL search, such as a search without text, an include or the search of a ",[316,2075,2076],{},"Contains"," resource.",[928,2079,2080,2081,2085,2086,2088],{},"In the ",[2082,2083,2084],"a",{"href":173},"details",", each instruction says under ",[316,2087,746],{}," whether it applies to a search with text on this resource.",[920,2090,128],{"id":2091},"actions",[313,2093,2094,2095,2098],{},"An action whose search has an engine text reads every key from the engine first, in pages of ",[316,2096,2097],{},"chunkCount",", then loads each chunk in SQL by key, before it runs, is queued or starts a batch.",[925,2100,2101,2122,2138],{},[928,2102,2103,2104,2107,2108,2111,2112,2114,2115,2118,2119,2121],{},"A search that matches more than ",[316,2105,2106],{},"maxResources"," resources gives ",[316,2109,2110],{},"This action can be run on at most 1000 resources; narrow the search."," under ",[316,2113,729],{},". With ",[316,2116,2117],{},"search.limit",", the action acts on the first ",[316,2120,1356],{}," results.",[928,2123,2124,2125,2127,2128,2130,2131,2134,2135,2137],{},"Without ",[316,2126,2117],{},", the action reads ",[316,2129,1478],{}," on Meilisearch or ",[316,2132,2133],{},"paginationLimitedTo"," on Algolia: the application key must be allowed to read the settings of the index. Set these limits above the ",[316,2136,2106],{}," of the actions.",[928,2139,2140,2141],{},"When the results change while the action reads them, it gives ",[316,2142,2143],{},"The search results changed while the action was resolving them; run the action again.",[313,2145,2146,2147,1011],{},"See ",[2082,2148,128],{"href":129},[2150,2151,2152],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":327,"searchDepth":334,"depth":364,"links":2154},[2155,2156,2157,2158,2159,2160,2161,2162],{"id":922,"depth":364,"text":923},{"id":1064,"depth":364,"text":1065},{"id":1148,"depth":364,"text":1149},{"id":1347,"depth":364,"text":1348},{"id":1425,"depth":364,"text":1426},{"id":1575,"depth":364,"text":1576},{"id":1283,"depth":364,"text":283},{"id":2091,"depth":364,"text":128},"Run the text search of a resource on Meilisearch, Typesense, Algolia or another Laravel Scout engine, with an index perimeter.","md",null,{},{"title":92,"description":2163},{"loc":93},"rspm7yK5kgD3dcze0pr2bATWO5oqblNf8Zo6Q29tiJo",[2171,2173],{"title":88,"path":89,"stem":90,"description":2172,"children":-1},"Declare the text search of a resource with LIKE or the full-text index of the database, pick a mode per request and sort by relevance.",{"title":96,"path":97,"stem":98,"description":2174,"children":-1},"Replay a client search payload from a job, a command or an export with Rest::search(), with the validation, perimeter and policies of the endpoint.",1794181351774]