15

Textmateの「ファイルに移動」あいまい検索は本当に素晴らしいです。

Wincentのvim用のCommand-Tプラグインも同様のことを行い、それも素晴らしいものです。

誰かがこれらがどのように機能するかを説明できますか?彼らが使用する方法の一般的な用語はありますか?

編集:私はそれらのツールが何をするかについてもう少し詳しく説明します

ツールを使用すると、入力時にオプション(この場合はファイルパス)のリストを絞り込むことができます。

たとえば、次のファイルがある場合:

/app/models/people.rb
/app/models/address.rb
/app/person.rb
/person.rb

リストを絞り込むに/app/models/people.rbは、次のいずれかを入力できます。

amp
peo
mp
modelsp

それは非常に柔軟性があり、私が使用しているアプリにこの「リストの絞り込み」がない場合、私は自分自身にこの「リストの絞り込み」が欠けていることに気付きます。必要に応じて自分のプラグインを実装できるように、もっと詳しく知りたいです。もっとよく説明できればいいのですが、それが私がここにいる理由です:)

実際の動作を確認するには、wincentのcommand-tのデモをご覧ください。

4

5 に答える 5

3

すべての文字の間でワイルドカード検索を実行しているようです。

amp -> *a*m*p*
peo -> *p*e*o*
mp  -> *m*p*
modelsp -> ...

オプションのリスト内の1つの項目のみに一致する場合は、目的のオプションとしてそれを返します。

于 2011-08-02T19:20:18.910 に答える
2

Command-Tは、関数indoubleによって与えられたスコアに基づいてソートを実行し、あいまい検索を実行するように見えます。Command-Tのソースは作成者の著作権で保護されていますが、ソースはテキストエディタでvimballを開くことで見つけることができ(このページの下部にダウンロード)、おそらくより一般的なあいまい検索アルゴリズムのインスピレーションとして使用できます(誰かが)少なくとも私よりもCをよく読む人)。recursive_matchmatch.c

于 2011-05-23T06:07:17.087 に答える
2

これはあなたが話している正確なコードのようです:

https://github.com/textmate/textmate/blob/master/Frameworks/text/src/ranker.cc

于 2013-06-13T09:17:17.730 に答える
0

これがどのように機能するかはわかりませんが、高速ルックアップの場合は、http://en.wikipedia.org/wiki/Directed_acyclic_word_graphに似たものを生成し、O(L)の複雑さを持たせることができます。ここで、Lは検索パターンの長さです。

于 2011-05-23T09:29:10.630 に答える
0

補足として:(Apache Solr)とそれがインデックスを生成する方法を見てください。TextmateのCommand-Tに似たものをWebに実装しようとすると、かなり使用していることに気付きます。

具体的には、EdgeNGramFilterFactoryを確認してください。どこかにソースコードがあるかもしれないと思います。(Javaですが…)

于 2011-07-26T14:14:11.487 に答える