我正在尝试根据用户输入类型文本搜索引用和国家/地区的SQL Server 2008表(包含大约700万条记录)。我从用户那里得到的搜索字符串可以是:
“美国旧金山的酒店”或“纽约,纽约”或“巴黎sddgdfgxx”或“多伦多加拿大”条款并非总是用逗号分隔,而不是按特定顺序分隔,并且可能存在无用的数据。
这就是我的尝试:
方法1:FTS包含: 例如:select * from cityNames where where(cityname,'word1 and word2') - with AND select * from cityNames where where(cityname,'word1 or word2') - with OR
这不能很好地工作,因为像'sddgdfgxx'这样的术语如果与'AND'一起使用则不会返回任何内容。使用OR将适用于像'Paris'这样的单词城市,但不适用于'San Diego'或'San Francisco'
方法2:这实际上是反向搜索,它的逻辑是搜索用户输入字符串是否包含我表中的任何城市或国家/地区。这样我就可以肯定地搜索了“普罗旺斯地区艾克斯”或“纽约”。
ex:select * from cityCountryNames,其中'Ontario,Canada,Toronto'喜欢cityCountryNames
注意:我无法获得两个单词城市的结果,查询速度很慢。
感谢任何帮助。
答案 0 :(得分:2)
我强烈建议使用像Google Geocoding API这样的第三方API来获取此类输入并将其解析为具有离散部分的位置(街道地址,城市,州,国家等)然后您可以使用必要时搜索数据库的那些离散部分。
谷歌和必应等地图服务比你或我更好地解决了这个问题,为什么不利用他们所做的所有工作呢?
答案 1 :(得分:0)