在测试我的搜索引擎时,我意识到它不仅非常糟糕,而且对于用户可以输入的很多组合都不起作用。
我有一个搜索字段,用户可以在其中输入他想要的内容。一个地区、一个城市名称、一个邮政编码甚至一个国家或任何组合,没有预先确定的顺序,甚至没有预先确定的分隔符。
由于用户可以在该字段中输入大量可能的组合,因此很难找到与用户想要的城市相对应的城市。
更难的是,很多城市的名字里都有文章,或者用户可以输入或不能输入的组合名称、文章或单词。例如,由于我是法国人,我将使用名为:La Rochelle 的城市的示例。
用户已经可以仅使用城市名称搜索 La Rochelle、Rochelle 或 La-Rochelle。有了这个,如果他想更精确,他可以在之后或之前添加邮政编码,甚至是国家或两者......
我找不到任何关于如何从一些随机用户输入优化城市搜索的信息。有一些传统的方法可以做到这一点吗?
包含我的城市的表格如下:
CREATE TABLE cities (
id INT PRIMARY KEY,
article TEXT, - contain the article if there's one, or NULL if not
city_name TEXT, - the city name capitalized
article_upper TEXT, - the article in upper case
city_name_upper TEXT, - the city's name in upper-cases
city_slug TEXT, - the combination of the article + space + city name all in caps
zipcode TEXT, - the zip-code
country TEXT - country where the city is located
);
我所做的是考虑空格或“,”,其中分隔符并将字符串拆分为几个单词,然后尝试将这些单词与不同的字段匹配。
除了带有文章或由多个单词组成的名称之外,这还不错,因为文章(或其他单词)被完全视为一个不同的领域。
知道强制用户输入或使用单独的字段对我的客户来说是不行的,该问题的解决方案是什么?