2008-09-02 3 views
2

私はMS SQL Serverを使用する機能と同様の「類似の投稿」ですか?

"Articles (ArticleID, ArticleTitle, ArticleContent)" 

Articles-と呼ばれるテーブル内のMS SQL Server 2005データベース内の記事店の多くを持っている今、私は私に(非常に」などの任意のユーザの入力に対して同様の記事を返すことができ、いくつかのSPまたはSQLクエリをしたいですブログやORの "関連する投稿"で "関連する質問" in stackoverflow)。一致はArticleTitleとArticleContentの両方で機能するはずです。クエリは、関連性に基づいて結果をソートするのに十分なインテリジェントでなければなりません。

これはMS SQL Server 2005でも可能ですか?

答えて

1

このようなものは、ランキングシステムの一種です。 SQL文字列を作成するには、おそらくアプリケーション内の文字列を分割する必要がありますが、同様の方法で効果的なサイト検索を構築しています。

Select 
Top 10 
ArticleID, 
ArticleTitle, 
ArticleContent 
From 
Articles 
Order By 
(Case When ArticleTitle = 'Article Title' Then 1 Else 0 End) Desc, 
(Case When ArticleTitle = 'Article' Then 1 Else 0 End) Desc, 
(Case When ArticleTitle = 'Title' Then 1 Else 0 End) Desc, 
(Case When Soundex('Article Title') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc, 
(Case When Soundex('Article') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc, 
(Case When Soundex('Title') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Article%Title%', ArticleTitle) > 0 Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Article%', ArticleTitle) > 0 Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Title%', ArticleTitle) > 0 Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Article%Title%', ArticleContent) > 0 Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Article%', ArticleContent) > 0 Then 1 Else 0 End) Desc, 
(Case When PatIndex('%Title%', ArticleContent) > 0 Then 1 Else 0 End) Desc 

order by句から大文字/小文字のステートメントを追加/削除して、データに基づいてリストを改善できます。

0

まず、類似性という意味の記事を定義する必要があります。
たとえば、いくつかのメタ情報をタグなどの記事に関連付けることができます。
類似の記事を見つけるには、それらからいくつかの機能を抽出する必要があります。たとえば、フルテキストインデックスを作成できます。

あなたは、私は質問があなたに何を意味するのか「似て」だと思うMSSQL 2005のフルテキスト検索機能

-- Assuming @Title contains title of current articles you can find related articles runnig this query 
SELECT * FROM Acticles WHERE CONTAINS(ArticleTitle, @Title) 
0

を利用することができます。ユーザーがある種のタグを入力するためのフィールドを作成すると、照会がずっと簡単になります。

関連する問題