0

我的网站上有一个搜索工具,它使用 freetexttable 上的 RANK 字段对匹配项进行排名。我一直将 KEY 字段加入到我的产品 ID 中,这两个整数都没有问题。但是,我必须将我的产品 ID 转换为 varchar 才能开始使用字母数字值。无论我做什么,我都无法再让 KEY 字段与产品 ID 字段匹配。这就是我到目前为止所拥有的。

USE [database]
SELECT distinct ft.id, ft.title, ft.was, ft.[desc] AS 
productdescription, ft.price, ft.sortcost, ft.hidden, ft.discount, ft_IDX.RANK, ft_IDX.[KEY]
FROM dbo.products as ft
left JOIN FREETEXTTABLE(products, [desc],'bomber',50) ft_IDX ON CAST(ft.id AS VARCHAR(10)) = CAST(ft_IDX.[KEY] AS VARCHAR(10))
INNER JOIN [database].[dbo].[product_channel] ON [database].[dbo].[product_channel].[productid] = ft.id 
WHERE  (ft.hidden = 0) and (ft.superhide = 0) 

当我也开始使用字母数字产品 IDS 时,KEY 字段是否也会开始使用字母数字?如果不是,那么这个练习可能毫无意义,因为我的搜索将永远不会返回带有字母数字 ID 的产品。

4

1 回答 1

0

我发现这个问题与全文索引编目有关。我重新创建了目录,它解决了这个问题。

对于遇到相同问题的任何人,为此,我通过转到设计视图、右键单击并选择全文索引从表中删除了旧目录。然后我删除了当前的。然后我去存储>右键单击目录并重新将目录应用到产品表和我想要编目的字段。这对 ID 进行了重新编目(即使它们是 varchars)并且可以正常工作。

于 2013-05-09T19:36:16.333 回答