単語一致検索?


ななこ  2004-04-09 13:54:40  No: 82970  IP: [192.*.*.*]

毎度毎度お世話になります。m(._.)m
検索プログラムを作りたいんですが、
あいまい検索ではなく、単語一致検索をしたいです。

テキストにTEXTBOXと入力されているときに、”EXT"で検索するとHITする感じです。
”TEX”と入力しても、すべて単語1つずつはあるけど、1つの単語として検索文字列と
一致しないので、HITしない感じです。
1文字の文字列検索はできるんですけど、何文字かわからない、単語の完全一致の検索って
VBでできるんですか?

編集 削除
うにぃ  2004-04-09 14:24:44  No: 82971  IP: [192.*.*.*]

>”TEX”と入力しても、すべて単語1つずつはあるけど、1つの単語として検索文字列と
>一致しないので、HITしない感じです。
上記の部分の意味がよくわからないのですが、
1文字ずつHITさせるのではなく、入力された文字列としてHitさせたいってことでしょうか?

Instr関数ではだめなのでしょうか?

編集 削除
IMA  2004-04-09 15:51:53  No: 82972  IP: [192.*.*.*]

こんにちは、ななこ さん。  IMAと申します。

>テキストにTEXTBOXと入力されているときに、”EXT"で検索するとHITする感じです。
>”TEX”と入力しても、すべて単語1つずつはあるけど、1つの単語として検索文字列と
>一致しないので、HITしない感じです。

テキストに"TEXTBOX"と入力されているときに、
"TEXT" 或いは "BOX" で検索するとHITし、
"EXT" で検索するとHITしない感じですか?

日本語の例だと
テキストに"今日は天気がよい"と入力されているときに、
"今日" 或いは "よい" で検索するとHITし、
"は天気" や "気がよい" で検索するとHITしない感じですか?

私も、上手な方法があれば知りたいです。(^^;)

  日本語の場合は単語がスペースで区切られていないので、形態素解析を行い、
得られた単語それぞれの品詞を考慮しながら判断することになると思います。
  それようの専用ソフトもあるでしょうが、非常に高価なはずです。

  私は、趣味でコーディングしている程度ですので、Kakasi や 茶筅 などを
利用させていただき、簡単なロジックで逃げています。

※  上の"気がよい"といったものが、対象となる可能性もあるはずですし、
正確にやろうとすると言語学的な知識が要求されるでしょうね。
  また別のアプローチとして、日本語を対象にGREP検索し、検索結果を
キーワードが中央に並ぶKWIC形式で表示するようなソフトもあります。

御参考までに

編集 削除
???  2004-04-09 16:56:46  No: 82973  IP: [192.*.*.*]

検索対象文字列


Dim A  As String  '検索文字
Dim  B As String  'とすると
Dim Hit as boolean

Hit=false
for i= 1 to len(A)-len(b)
  if mid(A,i,len(b))=b then
      hit=true
      exit for
   end if
next
msgbox("Hit=" & Hit)

編集 削除
たかみちえ  URL  2004-04-09 21:44:06  No: 82974  IP: [192.*.*.*]

外部DLLを使ってもいいなら、BASP21のBregexp.dllを使うという手も…。
(でも、ちゃんと日本語区切りを認識してくれるのかどうか、わからないです…)

編集 削除