我们正在尝试在列出餐馆的网站上添加一个简单的搜索功能。我们尝试从搜索字符串中检测地名,位置和地点特征,例如“在cairo附近的便宜餐馆”或“弗吉尼亚州的中国和高端食物”。
我们现在正在做什么它将查询标记化并在表中搜索性能成本最低(价格表(cheap-budget-expensive-high-end)小于地点列表的表) 。这是正确的方法吗?
- 问候。 叶海亚
答案 0 :(得分:1)
我会说你应该建立一组同义词(例如廉价,低预算等进入synset:1)并将搜索字符串中的每个标记映射到其中一个组。
不过,在这里处理拼写错误很容易,因为这通常是一个非常小的搜索空间。编辑距离,普通k-gram,......任何事都应该没问题。在下一步中,您应该为每个syn-groups构建反向索引列表,将地图组织到可以与该属性关联的已排序的餐馆列表中。对于查询中的每个syngroup,获取所有这些列表并简单地将它们相交。
除非您对可以编制索引的餐馆有某种全文,否则可能不得不忽略无法映射到其中一个同义词集的单词。在那,你也可以为“普通”单词建立这样的餐馆名单,并将它们相交。但这已经非常接近经典搜索引擎了,使用像apache lucence这样的技术可能是一个好主意。如果没有全文,我认为你不需要这样的东西,因为snygroups的倒排索引很容易自己处理。
答案 1 :(得分:0)
似乎您可能会错过处理拼写错误的查询的方式。