1

我面临一个问题。我在互联网上搜索了一个解决方案,但没有找到任何解决方案。

这是我的问题:我有一些项目存储在具有位置(纬度和经度)的数据库表中。例如,巴黎的飞机、纽约的自行车、巴黎的另一辆自行车、东京的洗碗机等……我想在某个地方附近找到所有类型的物品。

为此,我做了 2 个输入字段:一个称为“What”,另一个称为“Where”(这个具有谷歌地图的自动完成功能)。如果您在第一个字段中输入“Bike”,在第二个字段中输入“Paris”,则可以完美运行!(我使用地理编码获取“Where”字段的坐标,然后使用 SQL 查询过滤对象类型)

但我的目标是在一个输入字段中实现这一目标!一个全局字段,用户可以在其中输入“Bike Paris”或“Paris Bike”并获取数据库中所有靠近巴黎的自行车的结果。就像谷歌地图中的情况一样:如果您输入“手机芝加哥”:它将解释“芝加哥附近的手机”并获得您的结果。困难在于解释哪个词是放置的,哪个不是。

您知道如何实现这一目标吗?

先感谢您。

4

2 回答 2

1

这需要一些工作。一种方法是使用某些机器学习分类算法的某些方法。他们基本上所做的是,他们使用某种包含观察的数据集进行训练,以将对象分类为某些类别。因此,当他们获得一个新对象时,他们可以相应地对其进行分类。

你可以在这里这里阅读更多关于它们的信息

如果您无法管理这种复杂性,您可以做的一件简单的事情是搜索用户在最小数据集中(即事物或地点)中输入的词,如果其中一个词比另一个词大,等等。

于 2012-09-28T12:18:03.390 回答
1

这条SQL语句

SELECT *  FROM `mixedsearch` WHERE `place` IN ('London','Bike') AND `type` IN ('London','Bike')

选择

London | Bike

从这张表

place | type
Paris | Bike
Paris | Plane
Paris | Car
London | Bike
London | Car
London | Plane
Tokyo | Dishwasher
Tokyo | Bike

SQLFiddle

如何将输入字段转换为 SELECT 语句取决于您的应用程序

于 2012-09-28T14:21:51.367 回答