Need help about setting items to rarity with search bar

  1. I wanna settle when something typed in search bar items will show up to his rarity priority

{F40D1566-28B0-4A64-9978-F58FE32D130F}
{6732FFF8-4CD2-486F-A9FD-CA8165D265BF}

function RankItems(Type, item, search)
	local GetItemRarity = require(ReplicatedStorage.InfoModules.ItemRanks)
	local RarityTable = GetItemRarity:GetRank()
	local int = 9
	local int2 = 9
	
	local function Loop()
		for i,v in ipairs(Assets:FindFirstChild(Type):GetChildren()) do
			if v.ItemRarity.Value == RarityTable[int] then
				SetItemStat(v, Type)
			end
		end
		int = int - 1
		if not (int <= 0) then
			Loop()
		end
	end
	
	local function LoopSearch()
		for i,v in ipairs(Assets:FindFirstChild(Type):GetChildren()) do
			local item1 = string.lower(tostring(item.ItemName.Value))
			local item2 = string.lower(tostring(v.ItemName.Value))
			if string.find(item2, search) and v.ItemRarity.Value == RarityTable[int] and string.match(item2, item1) then
				SetItemStat(item, Type)
			end
		end
		int2 = int2 - 1
		if not (int2 <= 0) then
			LoopSearch()
		end
	end
	
	if item == 1  then
		Loop()
	else
		LoopSearch()
	end
end

function SetItemStat(item, Type)
	local PlayerItem = script.PlayerItem:Clone()
	
	PlayerItem.Heading.Text = item.ItemName.Value
	PlayerItem.ItemImage.Image = item.ItemImage.Value
	PlayerItem.Parent = PlayerItems

	if FirstButton == true then
		positionX = positionX + 90
		if positionX > 270 then
			positionX = 0
			positionY = positionY + 110
		end
	else
		FirstButton = true
	end

	PlayerItem.Position = UDim2.new(
		PlayerItem.Position.X.Scale,
		positionX,
		PlayerItem.Position.Y.Scale,
		positionY
	)

	PlayerItem.BackgroundColor3 = item.ItemRarity.Color3.Value

	PlayerItem.MouseButton1Click:Connect(function()
		CreateStatsGUI(Type, item)
	end)
end

function CreateItem(item, Type, search)
	local PlayerItem = script.PlayerItem:Clone()
	
	warn(item, Type, search)
	if item ~= nil then
		RankItems(Type, 1)
	else
		RankItems(Type, item, search)
	end
end

function DeleteItems()
	for i,item in ipairs(PlayerItems:GetChildren()) do
		item:Destroy()
		FirstButton = false
		positionX = 0
		positionY = 0
	end
end

function SearchInventory()
	local search = string.lower(SearchBox.Text)
	
	for i, folder in ipairs(Assets:GetChildren()) do
		if folder:IsA("Folder") then
			for i, item in ipairs(folder:GetChildren()) do
				if search ~= "" then
					local item2 = string.lower(tostring(item.ItemName.Value))
					if string.find(item2, search) then
						if folder.Name == "Knife" then
						    CreateItem(item, "Knife", search)
						end
						if folder.Name == "Weapon" then
						 	CreateItem(item, "Weapon", search)
						end
					end
				else
					DeleteItems() 
					return
				end
			end
		end
	end
end