lucene を使用する IDE のものと同様の「ファイル内検索」を実装したいと考えています。基本的に、.c、.cpp、.h、.cs、.xml などのソース コード ファイルを検索します。Apache Web サイトに表示されているデモを試しました。行番号とそのファイル内の出現回数のないファイルのリストを返します。確実に手に入れる方法はあると思います。
とにかくそれらの詳細を取得する方法はありますか?
lucene を使用する IDE のものと同様の「ファイル内検索」を実装したいと考えています。基本的に、.c、.cpp、.h、.cs、.xml などのソース コード ファイルを検索します。Apache Web サイトに表示されているデモを試しました。行番号とそのファイル内の出現回数のないファイルのリストを返します。確実に手に入れる方法はあると思います。
とにかくそれらの詳細を取得する方法はありますか?
多くのフォーラムを試しましたが、応答はゼロです。最後に、@Luca Mastrostefanoの回答から行番号の詳細を取得するというアイデアを得ました。
lucene searcher の Taginfo はファイル名を返します。行番号を取得するにはそれで十分だと思います。Lucene インデックスは実際のコンテンツを保存するのではなく、実際にはハッシュ値を保存します。そのため、行番号を直接取得することはできません。したがって、そのパスを使用してファイルを読み取り、行番号を取得することが唯一の方法だと思います。
public static void PrintLines(string filepath,string key)
{
int counter = 1;
string line;
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader(filepath);
while ((line = file.ReadLine()) != null)
{
if (line.Contains(key))
{
Console.WriteLine("\t"+counter.ToString() + ": " + line);
}
counter++;
}
file.Close();
}
lucene サーチャーからのパスの後にこの関数を呼び出します。