我們正在將我們的應用程序的數據庫遷移到Windows Azure SQL數據庫。在應用程序中,有幾個輕量級搜索函數,我們目前使用T-SQL和全文索引來處理搜索。但是,全文索引目前在Azure中不可用。沒有全文索引的SQL搜索
我正在研究非SQL解決方案,如Lucene.Net,這看起來不錯,但我認爲它可能是我們正在嘗試做的事情的矯枉過正。我們搜索的數據集並不大 - 平均少於100,000條記錄 - 並且只有少數幾個。一個示例表可能看起來像這樣...
CREATE TABLE dbo.Items(
[ItemID] [int] IDENTITY(1,1) NOT NULL,
[Author] [varchar](255) NULL,
[Subject] [varchar](255) NULL,
[ItemContent] [nvarchar](max) NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([ItemID] ASC)
)
...我們想要搜索作者,主題和ItemContent字段。作者和主題可以是多個單詞,而ItemContent字段可以有幾個段落,所以我看不到我如何避免表掃描。全文索引表現非常好,我不期待:
SELECT ItemID FROM dbo.Items WHERE作者LIKE'%'+ @SearchTerm +'%'OR主題LIKE'%'+ @ SearchTerm +'%'或ItemContent LIKE'%'+ @SearchTerm +'%'
任何人都有如何優化此類型的搜索而不使用全文索引的建議嗎?
什麼樣的搜索,你期待着做.. 。如果你想搜索像「herman melvi lle moby dick「,lucene會記住這一點,但是你的搜索查詢不會......你確定你不需要lucene-ish解決方案嗎? – Rikon 2012-07-18 02:13:18
我喜歡Lucene,因爲它確實是一個「搜索」解決方案,它絕對是在運行。也就是說,到目前爲止,我們的全文索引查詢對於此特定任務運行良好 - 查詢往往是快速的過濾器類型查詢,而不是更復雜的搜索字符串。所以如果我能從T-SQL解決方案中獲得良好的性能,我會傾向於這個方向。 – 2012-07-18 05:49:16