Setting buttons for rarity priority

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

First image when button is clicked
image
Second image when something typed
image

it generates multiple buttons help!

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