标签: freetexttable

FREETEXTTABLE的排名始终为0

我正在使用SQLServer 2008,如果我执行以下查询:

SELECT 
  *
FROM
  FREETEXTTABLE(SomeTable, Name, 'a name that I know exists')
Run Code Online (Sandbox Code Playgroud)

我得到了我期望的行,但等级总是为0.

在寻找这个问题的解决方案时,在Microsoft ASP.NET论坛上发现了这个问题,如果我添加:

ALTER FULLTEXT CATALOG MyCatalog REBUILD
Run Code Online (Sandbox Code Playgroud)

我开始获得排名 - 但只是暂时的.

我不想每次进行搜索时都要重建我的目录,特别是当我在数据库中有大量数据时,如果我在查询之前直接将它添加到我的Sproc中,我的查询无论如何都不会返回结果,大概是因为目录已完成重建.似乎有其他人有这个和类似的问题,但我一直无法找到解决方案.有任何想法吗?

t-sql full-text-search freetexttable sql-server-2008

7
推荐指数
1
解决办法
2522
查看次数

忽略 SQL Server 中全文搜索 (FREETEXTTABLE) 搜索列中的破折号 (-)

CONTAINSTABLE用于我的搜索算法。我想在特定列值中忽略破折号来搜索列值。例如,列包含 '12345-67' 那么它应该使用 '1234567' 进行搜索,如下查询。

SELECT * 
FROM table1 AS FT_Table
INNER JOIN CONTAINSTABLE(table2, columnname, '1234567') AS Key_Table ON FT_Table.ID = Key_Table.[Key]
Run Code Online (Sandbox Code Playgroud)

在搜索不包含破折号 (-) 的字符串时,有没有办法忽略破折号 (-)?

sql-server full-text-search freetexttable containstable sql-server-2014

5
推荐指数
0
解决办法
969
查看次数

交叉应用自由文本表

MS SQL Server 2005:table1 有全文索引。我想在单个查询中对其运行多个自由文本表搜索,但是我的两次尝试都失败了。任何帮助将不胜感激,谢谢!ps 如果解决了这个问题,我愿意升级到 sql 2008 :)

CREATE FUNCTION fnt_FullTextSearch ( @s NVARCHAR(4000) )
RETURNS TABLE
AS
  RETURN
    ( SELECT [key], [rank]
        FROM FREETEXTTABLE(table1, *, @s) )

DECLARE @terms TABLE ( term VARCHAR(MAX) )
INSERT INTO @terms VALUES ( 'flu' )
INSERT INTO @terms VALUES ( 'acid' )

-- The inline function "..." cannot 
-- take correlated parameters or subqueries 
-- because it uses a full-text operator.
SELECT ft.[key], ft.[rank]
    FROM @terms 
        CROSS APPLY fnt_FullTextSearch(term) ft

--syntax error …
Run Code Online (Sandbox Code Playgroud)

full-text-search sql-server-2005 freetexttable cross-apply

5
推荐指数
1
解决办法
897
查看次数