0

私は次の表を持っています

search_redirect
sr_id | sr_keyword | sr_redirect | sr_synonyms
------------------------------------------------------
1     | chair      | www.url.com | recliner,seat,stool
2     | couch      | www.url.com | sofa,divan
3     | dresser    | www.url.com | chest,drawers

誰かが私のサイトで検索機能を使用するとき、検索内容を同義語のリストと比較できるようにしたいと考えています。解決策の私の試みはこれでした:

SELECT sr_redirect
FROM search_redirect
WHERE '#url.q#' IN (sr_redirect)

残念ながら、これは完全に合法的な動きですが、私が思っていたようなことにはなりません。次の試みは、 の値に一重引用符を追加することsr_synonymsでしたが、これも成功した結果にはなりませんでした。この問題を言葉にするのは難しいので、この状況について助けを見つけることができませんでした。これについて私が得ることができるアドバイスは、最も高く評価されます。SQL Server 2008 で ColdFusion 9 サーバーサイド スクリプトを使用しています。

4

3 に答える 3

0

純粋なSQLソリューションを維持するために、テーブルを2つのテーブルに変更します。

最初のものは持っている可能性があります:

search_redirect

sr_id | sr_keyword | sr_redirect

2番目は持つことができます

search_keyword_to_synonym

sr_id | sr_synonym

次に、2番目のテーブルの行ごとに1つの同義語のみがあります。その場合、ソリューションは次のようになります。

SELECT sr_redirect FROM search_redirect
INNER JOIN search_keyword_to_synonym
ON search_redirect.sr_id=search_keyword_to_synonym.sr_id
WHERE search_redirect.sr_keyword=whatever_input_you_have.
于 2012-08-31T19:59:03.843 に答える
0

初めに:

個別にアクセスする場合は、1つのフィールドに複数の情報を入力しないでください。一度もない

とはいえ、これは簡単に修正できます。次のようなテーブル「シノニム」を作成します。

synonym | sr_id
---------------
recliner| 1
seat    | 1
stool   | 1
sofa    | 2
divan   | 2

そしてそれで終わります。

于 2012-08-31T20:02:15.167 に答える
0

これと同様の構文を使用できます。

SELECT sr_redirect
FROM search_redirect
WHERE substr('#url.q#',sr_synonyms) > 0

私は他の人に同意しますが-再正規化

于 2012-08-31T20:03:31.987 に答える