私は、SQL Server 2014のフルテキスト検索を実装していますが見えないのはなぜ私がこのチュートリアルhttp://www.mikesdotnetting.com/article/298/implementing-sql-server-full-text-search-in-an-asp-net-mvc-web-application-with-entity-frameworkSQL Serverがデータベース
における第四ステップでdbo.Articles
ようdbo.Blocks
テーブルを追加しましたそして、私は検索手順を単純化しています私の目的のために:
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'.オンライン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
結果にBlocks
のテーブルはありません。そして、これはあなたがテーブルとしてBlocks
オブジェクトを使用しようとしているBlocks
のプロパティ
1.小さい:インテリセンスキャッシュが古くなっています - それを更新するためにCTRL-SHIFT-Rを押してください –
あなたのスクリーンショットでは、 'blocks'はテーブルではありません。テーブルフォルダには何がありますか? –