我執行的SQL Server 2014的全文檢索,我在本教程中http://www.mikesdotnetting.com/article/298/implementing-sql-server-full-text-search-in-an-asp-net-mvc-web-application-with-entity-framework爲什麼SQL Server不會看到數據庫
第4步添加dbo.Blocks
表像dbo.Articles
我已經簡化搜索過程我的目的:
CREATE PROCEDURE Search
@SearchTerm varchar(8000),
@CurrentPage int = 1,
@PageSize int = 20
AS
BEGIN
DECLARE @NearPredicate varchar(8000),
@AndPredicate varchar(8000),
@TotalRecords int
SELECT
@NearPredicate = COALESCE(@NearPredicate + ' NEAR ', '') + items
FROM
dbo.Split(@SearchTerm, ' ')
LEFT JOIN
sys.fulltext_system_stopwords ON items = stopword
WHERE
stopword IS NULL
SET @AndPredicate = REPLACE(@NearPredicate, 'NEAR', 'AND')
SET @NearPredicate = '(' + @NearPredicate + ')'
SET @TotalRecords = (
SELECT
COUNT(*)
FROM
AbstractBuildBlocks
WHERE CONTAINS(*, @AndPredicate)
)
SELECT a.SiteId,
a.Content,
ct.Rank,
@TotalRecords AS TotalRecords
FROM
AbstractBuildBlocks a
INNER JOIN CONTAINSTABLE (Blocks, *, @NearPredicate) AS ct ON a.Id = ct.[Key]
ORDER BY
ct.RANK DESC
OFFSET (@CurrentPage - 1) * @PageSize ROWS FETCH NEXT @PageSize ROWS only
END
我嘗試在SQL Server Management Studio來測試:按新的查詢,打印EXEC Search @SearchTerm="sample", @CurrentPage = 1
和命中執行!
有兩個問題:
小:SQL Server Management Studio中強調我的查詢
Search
說:Couldn't find stored procedure 'Search'
大:服務器時執行查詢拋出一個錯誤:
Msg 208, Level 16, State 1, Procedure Search, Line 34
Invalid object name 'Blocks'.on line 34:
FROM dbo.Split(@SearchTerm, ' ') /*line 34*/
我覺得很奇怪,因爲我已經創建的數據庫dbo.Blocks
和Split
功能我甚至不使用此表。
不知道它是否重要,但dbo.Split
下劃線用紅色,信息:Invalid object name
,但儘管此過程已成功創建並存儲。
而最後我只是嘗試用dbo.Blocks
我更換Blocks
:
FROM
AbstractBuildBlocks a
INNER JOIN CONTAINSTABLE (Blocks, *, @NearPredicate) AS ct ON a.Id = ct.[Key]
,並重新編譯程序 - 現在的錯誤:
Msg 208, Level 16, State 1, Procedure Search, Line 34
Invalid object name 'dbo.Blocks'. /instead of blocks/
UPDATE我用這個
SELECT '['+SCHEMA_NAME(schema_id)+'].['+name+']'
AS SchemaTable
FROM sys.tables
1.小:智能感知緩存已過時 - 按CTRL-SHIFT-R刷新它 –
在您的屏幕截圖中,「blocks」不是表格。表格文件夾中有什麼? –