dbo.GetEncyclopediaSearch.StoredProcedure.sql
3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
USE [AIADatabaseV5]
GO
/****** Object: StoredProcedure [dbo].[GetEncyclopediaSearch] Script Date: 02/06/2018 10:49:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================================
-- Author: Magic
-- Create date: 28-May-09
-- Description: Get the result based on the keyword search
-- =============================================================
CREATE PROCEDURE [dbo].[GetEncyclopediaSearch]
-- Add the parameters for the stored procedure here
@iLexiconId int, @sSearchKeyword nvarchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT COUNT(DISTINCT EncyclopediaWeightage.Keyword) AS hitcount,
SUM(EncyclopediaWeightage.Relevancy) AS score,
EncyclopediaMetadata.Title, EncyclopediaMetadata.ProjectTypeId, EncyclopediaMetadata.GenContentId,
EncyclopediaMetadata.SubContent
FROM EncyclopediaMetadata
INNER JOIN EncyclopediaWeightage
ON EncyclopediaMetadata.Id = EncyclopediaWeightage.MetadataId
WHERE EncyclopediaMetadata.LexiconId = @iLexiconId
AND EncyclopediaWeightage.Keyword = @sSearchKeyword
GROUP BY EncyclopediaWeightage.Keyword, EncyclopediaWeightage.Relevancy, EncyclopediaMetadata.Title,
EncyclopediaMetadata.ProjectTypeId, EncyclopediaMetadata.GenContentId,EncyclopediaMetadata.SubContent
UNION
SELECT 1 AS hitcount, 1 AS score, EncyclopediaMetadata.Title, EncyclopediaMetadata.ProjectTypeId,
EncyclopediaMetadata.GenContentId, EncyclopediaMetadata.SubContent
FROM EncyclopediaMetadata WHERE (' ' + EncyclopediaMetadata.Title+ ' ') LIKE '%'+ @sSearchKeyword +'%'
AND EncyclopediaMetadata.Id NOT IN
(SELECT InDepthWeightage.MetadataId FROM InDepthWeightage WHERE InDepthWeightage.Keyword = @sSearchKeyword)
ORDER BY hitcount DESC, score DESC
END
GO