在Lua中,可搜索的标记表?
2014-3-12 12:53:22
收藏:0
阅读:75
评论:3
所需做的是基于一些标签搜索表格。它需要根据标签数量创建匹配列表。如果我们有4个标签相匹配,那么这将是一个列表,3个标签另一个列表,2个标签另一个列表。你会如何使用lua表格来实现这个?
我不想要太复杂的东西,如果有一个不复杂设置的库或接口与数据库,则fine。但如果没有,我可以接受原生的解决方案,但速度和内存的代价很高。
我说的标签是这样的
假设我们有表格
T [1] = {cat,mouse bat,fly,car,airplane,glider}
像蝙蝠,飞行器,飞行器和滑翔机这样的词语将具有可飞行的标签。另一个标签可能是汽车和飞机的机器。另一个标签是动物:猫,老鼠,蝙蝠,苍蝇。因此,如果您使用可飞行的+机器两个标签进行搜索,则会得到飞机。如果您搜索动物+可飞行,则会得到蝙蝠和苍蝇。因此,我需要一个包含此标签信息的结构,可让我轻松搜索。
点赞
用户1775869
function findtable(table,value)
for k,v in pairs(table) do
if (v == value) or (k == value) then
return true
end
end
return false
end
function tagged_flyable(value)
local flyable_table = {'bat','fly','airplane','glider'}
if(findtable(flyable_table,value) == true) then
return true
else
return false
end
end
function tagged_animals(value)
local animals_table = {'cat','mouse','bat','fly'}
if(findtable(animals_table,value) == true) then
return true
else
return false
end
end
function tagged_machines(value)
local machines_table = {'car', 'airplane'}
if(findtable(machines_table,value) == true) then
return true
else
return false
end
end
-- 主要流程
local T_1 = {'cat','mouse', 'bat', 'fly', 'car', 'airplane', 'glider'}
local search_results = {}
-- 搜索 flyable+machine 标签
for i=1,table.getn(T_1) do
if(tagged_machines(T_1[i]) and tagged_flyable(T_1[i])) then
table.insert(search_results, T_1[i])
print("found :", T_1[i])
end
end
-- 搜索 flyable+animals 标签
search_results = {}
for i=1,table.getn(T_1) do
if(tagged_animals(T_1[i]) and tagged_flyable(T_1[i])) then
table.insert(search_results, T_1[i])
print("found :", T_1[i])
end
end
2014-03-13 02:50:30
用户869951
最简单的方法是创建一个标签表,和两个结果表。标签表如下:
T = {cat={"animal", "legs"}, bat={"animal", "wings"}, ...}
结果表只是普通表格,表示哪些对象具有特定的标签:
res1 = get(T, "wings")
print(res1) -- 输出 cat bat plane
res2 = get(T, "machine")
print(res2) -- 输出 car train plane
然后就有一个函数来查找两个结果的交集:
bothTags = getIntersection(res1, res2)
getIntersection()函数只需要循环第一个表res1,并测试如果res2[第一个表中的物品]是nil,如果不是,则两个表都有一个项。
2014-03-13 19:10:17
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
Sets 可能是你正在寻找的数据结构类型。请查看 Programming in Lua 书中所解释的 Set。