谁能建议如何轻松解决下面的搜索问题,我的意思是有任何算法,或全文搜索将足以满足这一点?
有以下分类项目数据,
ItemCategory | ItemCluster | ItemSubCluster | SubCluster | Items | |
---|---|---|---|---|---|
蔬菜 | 块根蔬菜 | 根 | 无皮 | 马铃薯、红薯、山药 | |
蔬菜 | 根茎蔬菜 | 根 | 根 | WithSkin | 洋葱、大蒜、葱 |
蔬菜 | 蔬菜 | 绿叶蔬菜 | 叶子 | 莴苣、菠菜、银甜菜 | |
蔬菜 | 青菜 | 十字花科 | 花 | 白菜、花椰菜、抱子甘蓝、西兰花||
蔬菜 | 绿色蔬菜 | 可食用植物茎 | 茎 | 芹菜、芦笋 |
你的做法几乎是正确的。
你不需要在这里搜索全文。
你可以在这里创建一种反向索引,如下所示:
如果我们以potato
为例,为potato
创建一个映射,存储它的ItemCategory, ItemCluster, ItemSubCluster, SubCluster。
例如-
"potato": {
"ItemCategory": "Vegetable",
"ItemCluster": "Root vegetables",
"ItemSubcluster": "Root",
"Subcluster": "Without Skin"
}
现在,为每种蔬菜存储这种数据将是昂贵的。
您可以通过使用编码方案来优化存储:
例如-
令ItemCategory
用0
表示,令ItemCluster
用1
表示,令ItemSubcluster
用2
表示,设Subcluster
用3
表示和值用类似的编码方案表示:
令Vegetable
用0
表示,令Root vegetables
用1
表示,令Root
用2
表示,设Without Skin
用3
表示现在,映射变成:
"potato": {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
}
为了进一步优化这一点,您还可以保持蔬菜的索引。例如,potato
可以表示为0
。
最终索引变成:
"0": {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
}