簡體   English   中英

SQL Server,我的自由文本搜索示例出了什么問題?

[英]SQL Server, what's wrong with my freetext search example?

我正在嘗試在SQL Server 2008上進行自由文本搜索。但是我無法使其正常工作。 任何人都可以發現我的腳本出了什么問題:

  • 安裝不正確嗎?
  • 我的查詢無效嗎?
  • 還有其他線索嗎?

為什么最后的查詢沒有結果?

----------------------------------------------------------------------------
-- Set up fulltext search
----------------------------------------------------------------------------
IF FullTextServiceProperty('IsFullTextInstalled') <> 1
BEGIN
    PRINT 'Full Text Service is not installed, script is aborted.'
    RETURN
END

IF DatabaseProperty(DB_NAME(), 'IsFulltextEnabled') <> 1
    EXEC sp_fulltext_database 'enable'

IF NOT EXISTS
(
    SELECT  1
    FROM    sys.fulltext_catalogs (NOLOCK)
    WHERE   name = 'searchcatalog_test'
)
BEGIN
    CREATE FULLTEXT CATALOG searchcatalog_test
    WITH ACCENT_SENSITIVITY = OFF
END


----------------------------------------------------------------------------
-- Set up table
----------------------------------------------------------------------------
IF OBJECT_ID('freetext_test', 'U') IS NOT NULL
BEGIN
    EXEC SP_FULLTEXT_TABLE 'freetext_test', 'DROP'
    DROP TABLE freetext_test
END

CREATE TABLE dbo.freetext_test
(
    freetext_id INT IDENTITY
,   freetext_data   NVARCHAR(MAX)
    CONSTRAINT pk_freetext_test PRIMARY KEY (freetext_id)
)

CREATE FULLTEXT INDEX ON freetext_test
(
    freetext_data   LANGUAGE 0  -- 0 = Neutral
)
KEY INDEX pk_freetext_test ON searchcatalog_test
WITH CHANGE_TRACKING AUTO

INSERT  INTO freetext_test(freetext_data)
        SELECT  N'Some text to test free text searching'
UNION   SELECT  N'Another text to test with'
UNION   SELECT  N'Another test string'
UNION   SELECT  N'Today is a sunny day'
UNION   SELECT  N'I wonder if anyone at StackOverflow can help me?'


----------------------------------------------------------------------------
-- Test section
----------------------------------------------------------------------------    
SELECT * FROM freetext_test

SELECT * FROM freetext_test WHERE FREETEXT (freetext_data, N'test')
SELECT * FROM freetext_test WHERE FREETEXT (freetext_data, N'string')
SELECT * FROM freetext_test WHERE FREETEXT (freetext_data, N'sunny')
SELECT * FROM freetext_test WHERE FREETEXT (freetext_data, N'StackOverflow')

SELECT * FROM freetext_test WHERE CONTAINS (freetext_data, N'text OR test')
SELECT * FROM freetext_test WHERE CONTAINS (freetext_data, N'string OR another')
SELECT * FROM freetext_test WHERE CONTAINS (freetext_data, N'today AND sunny')
SELECT * FROM freetext_test WHERE CONTAINS (freetext_data, N'anyone AND StackOverflow')

您的腳本就像一個魅力。

可能是因為執行SELECT的速度太快,索引引擎無法建立目錄嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM