代码之家  ›  专栏  ›  技术社区  ›  Jason N. Gaylord

在MS SQL 2000中自定义FreeTextTable

  •  0
  • Jason N. Gaylord  · 技术社区  · 15 年前

    我正在寻找以下2个问题的答案(SQL Server 2000)。我有一个ORDER INFO表,它被编入索引,这样我就可以搜索特定列上的数据。因此,我可能运行的一个查询示例是:

    SELECT top 50 ft_tbl.*, key_tbl.Rank
    from OrderInfo as ft_tbl
        INNER JOIN FREETEXTTABLE(OrderInfo, Address1, 'W Main St') as key_tbl
        ON ft_tbl.OrderInfoID = key_tbl.[KEY]
    order by key_tbl.Rank desc
    

    我所期望的是,SQL将首先提取与“w main st”匹配的所有内容,因为这将具有最高的排名,然后是后面的变体。然而,我的结果并不完全符合我的预期。以下是按等级排序的前8个结果:

    • 258 W主ST
    • 马绍尔街北4322号
    • 221主ST
    • 320阔街
    • 7秒第三ST
    • 鲍尔林街510号
    • 175大街
    • 108 Maywood St

    (我知道为什么现在会发生这种情况,并假设我可以用下面的答案来解决)

    问题:如果st可能是:

    • ST
    • 街道

    W可以

    • W
    • W
    • 西

    事先谢谢!(颠簸)

    1 回复  |  直到 15 年前
        1
  •  0
  •   Irwin M. Fletcher    15 年前

    不确定您是否遇到了这个问题的答案,但我认为可以使用contains子句来考虑这些变化。这两者都提供了相当好的资源。

    http://www.eggheadcafe.com/articles/20010422.asp

    http://en.wikipedia.org/wiki/SQL_Server_Full_Text_Search#Inflectional_Searches