0
我正在嘗試在SQL Server 2008上進行自由文本搜索。但是我有問題讓它工作。任何人都可以發現我的腳本中有什麼問題:SQL Server,我的自由文本搜索示例有什麼問題?
- 它設置不正確嗎?
- 我的查詢無效嗎?
- 還有其他線索嗎?
爲什麼最後的查詢沒有結果?
----------------------------------------------------------------------------
-- 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')
是的!你是絕對正確的!謝謝。 – Uhlen 2011-03-15 11:24:58