我正在尝试为 Rails 中的杂货店构建搜索界面。我的数据库中存储了几种杂货店产品,但我正在努力寻找一种搜索它们的好方法。
到目前为止,我已经使用Thinking Sphinx对产品进行了全文搜索。这适用于某些项目,例如“eggs”,但对于其他搜索有几个问题,例如“lime”。
例如,当我搜索“石灰”时,我得到以下返回的项目:
- Diet Sierra Mist 柠檬酸橙冰箱伴侣苏打水
- G2 柠檬青柠低热量电解质饮料
- Deer Park Berry Lime 苏打水
- 海洋喷雾鸡尾酒配酸橙蔓越莓汁
- 复古苏打水石灰
- 可乐饮食与石灰苏打轮廓瓶
- 可乐饮食与石灰苏打冰箱包
- Diet Sierra Mist 柠檬酸橙冰箱伴侣苏打水
- Refreshe Soda Diet 柠檬酸橙冰箱包
- 刷新苏打柠檬酸橙
- Refreshe 苏打水柠檬酸橙冰箱包
- Sierra Mist 天然柠檬酸橙苏打水
- ... ETC
我真正想要的是真正的水果,它们在我的数据库中列为以下产品:
- 大石灰
- 有机酸橙
- 预先包装好的石灰钥匙
如何让我的搜索更智能?
值得注意的是,我确实有很多关于每种产品的分类数据。我基本上有一个完整的“食物树”,其中每个产品都是树的一个根节点。
例如,对于“Limes Large”产品,我有以下类别:
水果和蔬菜 > 新鲜水果 > 柑橘 > 大柠檬
如何更好地使用这些类别来改进我的搜索?
在我的研究中,我开始相信我需要使用语义搜索而不是全文搜索。我遇到了Ruby 的Picky gem,它看起来很有希望,但我不确定我是否有正确的方法。
语义搜索可以帮助我进行更好的搜索吗?Picky 是否适合以这种方式分类的数据?还有其他见解吗?任何指导将不胜感激。提前致谢。