0

誰かがSOUNDEX(mysql / php)を使用して複数の単語を照合する方法を説明できますか?シンプルなインサイト広告システムを作ろうとしています。

「ad_id」列と「keywords」列を持つテーブルと、「page_url」と「keywords」列を持つ別のテーブルがあります。問題は、最初のテーブルでは、特定のad_idのすべてのキーワードが1つの行にあることですが、2番目のテーブルでは、次のような複数の行があります。

page_url:-----キーワード:
page1.php ----- keyword1、keyword2、keyword3
page1.php ----- keyword4
page2.php ----- anotherkeyword

2つの表を比較して、どちらの広告を表示するかを判断しようとしています。2番目のテーブルの同じページ名に対応する複数の行があることを理解しようとすると、本当に問題が発生します。もちろん、それらはすべてコンマで区切られています。

どこから始めればいいですか?何かアドバイスをいただければ幸いです。ありがとう。

4

2 に答える 2

2

各行に1つのキーワードのみを使用して、2番目のテーブルから別のテーブルを作成する必要があります。次に、2つのテーブルを一致させるのは簡単です。

于 2011-07-12T21:58:47.537 に答える
-1

SQLサーバーでこの分割関数を作成します。

   CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))       
returns @temptable TABLE (items varchar(8000))       
as       
begin       
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)       

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return       
end  

次のように使用できますselect * from dbo.split('val1,val2,val3',',') 。結果をテーブル形式で返します。

val1
val2
val3

次に、この関数を使用します。

declare @tmp table(keyword varchar(100))
insert into @tmp
select tbl.item from 
(select split(t2.keyword) as item from table2) as tbl
Select * from table1 t1
where t1.keyword in (select keyword from @tmp)
于 2011-07-12T22:01:19.533 に答える