相似和语义搜索


Similar and semantic search

我在语义网搜索方面有几个问题。我正在用PHP/MySQL构建应用程序,它将作为"语义"搜索引擎工作。这个问题通常很难,但我的情况要简单一些。我只需要在我的网站上搜索数据,只有数据,我将添加到数据库。

这个想法是有人搜索食物,所以系统返回在食物旁边的文档也包含单词Pizza,因为Pizza是一种食物。我的网站将是非常具体的,所以有可能模拟所有这些关系(至少我认为是这样),但我预计,不会有一切。第一个问题是,我不知道如何将这些数据保存到数据库中,我的意思是这个关系,因为它将是N:M关系,它必须非常灵活,因为它将用于网站上的每个搜索。它将"像树一样",从最抽象到最具体,例如食物->披萨->玛格丽塔,但也有食物->素食->玛格丽塔。我的想法是使用语义网的三元组,并将所有关系保存为推理三元组。

下一个问题是关于用户数据输入的。假设用户可以在他们的文档中添加一些"标签",我的应用程序应该将它们连接到我的三元组。因此,如果用户输入Pizza,首先我的应用程序应该建议他所有已知的披萨,如果他选择margherita,那么他的文档将连接到margherita披萨,但如果他添加一些未知的披萨,我的应用程序将只连接他的文档与Puzza(更高的抽象)。

以后的每一个搜索查询将搜索最佳匹配在我的三元组模型和搜索相关的文档,这是好主意吗?

我的问题很普遍,如何设计这个应用程序,什么应该是第一个想法或第一个推动。

谢谢你提出的解决这个问题的建议。

一个快速的方法是在某处保留像"Food pizza margherita"answers"Food pizza something"连接到类别id和/或文档集,因此您可以对相关类别/文档执行全文和支持形态学的搜索,并显示上下类别。

这种类型的查询可以使用股票MySQL全文搜索http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html或外部全文搜索引擎,如Lucene http://lucene.apache.org/或Sphinx http://sphinxsearch.com