2011-10-20 53 views
2

我目前正在为我正在处理的小型网站搜索算法。我现在的问题是,它不够灵活。我的雇主希望搜索更灵活,并且可以在城市内进行搜索。检索搜索字符串中的城市

现在我有大部分的搜索工作,但我坚持这个城市的事情。我想要做的是在搜索字符串中找到城市名称,从数据库中获取城市ID,如果检测到的字符串实际上是城市,则必须从原始搜索字符串中删除城市名称以执行特定搜索之后的标题等等。

例如,如果我有以下搜索字符串“脊椎按摩哥本哈根C”,那么我希望能够找到“哥本哈根C”部分,获得该城市的城市ID,然后将其从我搜索的其余部分中排除,以便其余部分只会寻找“脊椎按摩师”。

我希望你明白我在找什么。

感谢

+1

这是一个难题,有兴趣看看会发生什么。你能超越PHP/mySQL吗?即在您的服务器上安装新软件? –

回答

1

好了,由于这样的事实,即有可能是在搜索字符串的一切,你需要在你的数据库的城市列表,并找到那些在搜索字符串本身。如果没有任何相似之处,那就意味着,即使它是一个真正的城市,它也不会存在于数据库中,因此它不会在那里形成。但是,如果您可以找到类似的搜索字段,则可以将其从搜索字符串中移除,并从数据库中获取城市的详细信息。

+0

,因为他想从db获取city-id,他obv。有一个城市列表。因为他想要这个id,我想这个城市如果不在数据库中并不重要。 – Flo

+0

正是我的意思。如果城市在城市列表中找不到,它可以停留在搜索字符串中。 –

+0

我通过首先将我的搜索字符串的单词与城市数据库进行比较来得到它的工作。然后保留数据库中匹配度最高的一个用于城市搜索,并从原始搜索字符串中删除找到该字符串的字符串。我现在可以像以前一样搜索,然后将城市检查添加到我的最终搜索字符串中。奇迹般有效。 – Simon

0

由于您不知道城市的名称,所以我建议您从数据库中读取所有的城市名称和ID。然后循环访问数组,并在搜索字符串中查找cityname。如果你找到它,你有名字和ID,并可以将它添加到你的查询,你有城市的名称,所以你可以简单地将其替换为“”在搜索字符串。