【发布时间】:2011-04-14 19:13:46
【问题描述】:
我正在尝试根据用户输入类型的文本在 SQL Server 2008 表(包含大约 700 万条记录)中搜索城市和国家/地区。我从用户那里得到的搜索字符串可以是:
“美国旧金山的酒店”或“纽约州纽约”或“Paris sddgdfgxx”或“加拿大多伦多”这些术语并非总是用逗号分隔,也没有特定的顺序,可能存在无用的数据。
这是我尝试过的:
方法 1:FTS 包含: 例如: select * from cityNames where contains(cityname,'word1 and word2') -- 使用 AND select * from cityNames where contains(cityname,'word1 or word2') -- 使用 OR
这并没有很好地工作,因为如果与“AND”一起使用,像“sddgdfgxx”这样的术语将不会返回任何内容。使用 OR 将适用于像“Paris”这样的单字城市,但不适用于“San Diego”或“San Francisco”
方法2:这实际上是一个反向搜索,它的逻辑是搜索用户输入的字符串是否包含我表中的任何城市或国家。这样我就可以确定搜索了“Aix en Provence”或“New York”。
ex: select * from cityCountryNames where 'Ontario, Canada, Toronto' like cityCountryNames
注意:我无法获得两个单词 city 的结果,而且查询速度很慢。
感谢任何帮助。
【问题讨论】:
标签: sql-server full-text-search search-engine