ユーザーがWebサイト上のテキストを検索するたびに、検索テキストがsearch_tableに記録されます。サブ検索も記録されます。それらはアスタリスクで記録されています。SQL - テーブルの列内で最も完全な文字列を検索する
目的は、ユーザーが検索した最も完全な検索テキストを見つけることです。
理想的な方法は次のようになります。
Group the ids = 1,4,6 and obtain id=6
Group the ids = 2,5,7 and obtain id = 7
Group the ids = 3 and obtain id = 3
Group the ids 8, 9 and obtain id = 9
search_tableの
id user search_text
--------------------
1 user1 data manag*
2 user1 confer*
3 user1 incomplete sear*
4 user1 data managem*
5 user1 conference c*
6 user1 data management
7 user1 conference call
8 user1 status in*
9 user1 status information
出力はあなたが助けてくださいすることができ
user search_text
---------------------
user1 data management
user1 conference call
user1 incomplete sear*
user1 status information
すべきですか?これは、他の一部であるすべての検索をフィルタリングしている
SELECT * FROM
SEARCH_TABLE st
WHERE
NOT EXISTS (
SELECT 1 FROM
SEARCH_TABLE st2
-- remove asterkis and ad %
WHERE st2.search_Text LIKE replace(st.search_text,'*','')||'%'
)
:以下のような
選択から外しIDだから問題は関係なく、あなたはそれが本当の単語であるかどうかを判断するために側に座って辞書ファイルを持っている必要がありますやっているのです。さもなければ、それはより大きいか、またはより完全であるので、「データ管理」に終わるでしょう。あなたはスクリプト言語やストアドプロシージャが必要になります – FirebladeDan
@ FirebladeDanユーザーが "data managementzzz"を検索したとしても、それは問題ないと思います。それは通常のクエリで行うことができます、そうですか? – lambda9
"data managementzzz"の検索は、アプリケーションで「データ管理」と同じ動作を示しますか?それがええなら、あなたはあなたが言っていることをグループ化し、最大を選ぶことができますが、これは行動であるとは思わない。起こるのは "data mana"が正しい結果を生み出すのに対し、 "data managementzzz"はおそらく0と一致します。 – FirebladeDan