我有一个问题,除了听起来微不足道之外,(对我来说)要找到一个直接的、可扩展的和高性能的解决方案并不简单。我有一个输入文本,网站用户可以在其中搜索位置。
今天位置可以是城市、城市中的地址或城市中的街区,用户必须使用逗号将地址或街区与城市分开,然后我很容易拆分字符串并查找是否第一个块是地址、社区或城市。如果用户未能在输入中填写所有需要的信息,输入一个没有城市的地址,并且我匹配多个具有相同名称的街道,我们将显示所有位置供他选择正确的位置。
使用搜索日志,我们发现大多数用户不使用逗号,即使所有工具提示都指出如何使用位置搜索(谢谢 google :p)。
因此,需要对位置搜索提出新要求,以接受非逗号分隔的地址,例如:
1. "5th Avenue"
2. "Manhattan"
3. "New York"
4. "5th Avenue Manhattan"
5. "5th Avenue Manhattan New York"
6. "Manhattan New York"
7. "5th Avenue New York"
但我找不到找到每个块的含义的方法或动态的方法来完成这项工作。即,如果我得到一个像“New Yok”这样的字符串,“new”可以是一个地址,“york”可以是一个城市。
我的问题是,是否有某种技术或框架来实现我所需要的,或者我需要在算法中以我的方式工作(基于字数、逗号等)来具体做到这一点?
编辑1:
因为我使用 SQL Server,所以我正在考虑全文搜索多列搜索,之前进行完全匹配,之后进行非完全匹配。但我认为一些不完整的地址会返回数千行。