我正在使用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中,我的查询无论如何都不会返回结果,大概是因为目录已完成重建.似乎有其他人有这个和类似的问题,但我一直无法找到解决方案.有任何想法吗?
我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
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)