以下のコマンドを実行してみて下さい。
%s/></>\r</g | filetype indent on | setf xml | normal gg=G
q:
コマンドウィンドウが開くと通常のコマンドモード時の操作が可能になります。
カーソルを再実行したい行に移動してEnterを押下すると再実行されます。
q/
または、
q?
カーソルを再検索したい行に移動してEnterを押下すると再検索されます。
:q
便利なので、是非、試してみて下さい。
No. | ファイル名 | 拡張子 | 更新日 | ファイル内の文章 | 条件1 | 条件2 | 条件3 | 条件4 | 条件5 | 条件6 |
1 | kessai.html | html | 2019/4/10 16:00:00 | 権限について。 | ||||||
2 | 稟議決裁1.docx | docx | 2019/4/10 16:00:00 | 規定の説明。 | ○ | ○ | ||||
3 | 稟議 決裁1.docx | docx | 2019/4/10 16:00:00 | 規定の説明。 | ○ | ○ | ||||
4 | 稟議規定1.docx | docx | 2019/4/10 16:00:00 | 規定の説明。 | ○ | |||||
5 | 細則.docx | docx | 2019/4/10 16:00:00 | 仕事の管理単位と稟議。 | ○ | ○ | ○ | |||
6 | 細則1.pdf | 2018/6/22 14:17:41 | 決裁権限 | ○ | ○ | ○ | ||||
7 | 細則2.pdf | 2018/6/22 14:17:42 | 決裁権限 | ○ | ○ | ○ | ○ | ○ | ||
8 | 細則3.pdf | 2019/4/10 16:24:17 | 決裁権限 | ○ | ○ | ○ | ○ | ○ | ||
9 | 細則4.pdf | 2019/4/10 16:24:18 | 決裁権限 | ○ | ○ | ○ | ○ |
以下のSampleのとおり、TextExtractor.Extract()メソッドで、ファイル内の文字列を取得できます。
※Shift-Jisのテキストファイル(.txt)は、UTF-8に変換しないと抽出に失敗するので要注意。
public void TikaExtractorTest() { var txtExtractor = new TextExtractor(); var path = @"C:\Temp\Test.xlsx"; var content = txtExtractor.Extract(path); Debug.WriteLine(content.Text); }
以下のSampleのとおり、ReadJEnc.JP.GetEncoding()メソッドで文字コードを自動判定することができます。
ShiftJIS
ポイントは、以下の2点です。
public void LongPointTest() { var analyzer = new WhitespaceAnalyzer(); var iwc = new IndexWriterConfig(analyzer); iwc.SetOpenMode(IndexWriterConfigOpenMode.CREATE); //テスト用インデックス作成--------------------------------------------- DateTime baseDate = DateTime.Parse("2020/07/16 08:00:00"); var ram = new RAMDirectory(); var writer = new IndexWriter(ram, iwc); try { for (int i = 0; i < 10; i++) { var doc = new Document(); doc.Add(new TextField("text", "hoge foo", FieldStore.YES)); DateTime tmp = baseDate.AddDays(i); long l = long.Parse(tmp.ToString("yyyyMMddHHmmss")); //日付文字列をlong値で保持 doc.Add(new LongPoint("date", l)); //long値をストアするには、同じフィールド名でStoredFieldとして指定する必要がある。 doc.Add(new StoredField("date", l)); writer.AddDocument(doc); } } finally { writer.Close(); } //検索------------------------------------------------------------ TermQuery tq = new TermQuery(new Term("text", "foo")); //日付範囲の条件 Query rq = LongPoint.NewRangeQuery("date", 20200717000000, 20200719000000); BooleanQueryBuilder b = new BooleanQueryBuilder(); b.Add(tq, BooleanClauseOccur.MUST); //AND条件 b.Add(rq, BooleanClauseOccur.FILTER); //AND条件(スコアリングに関与しない) Query q = b.Build(); DirectoryReader dr = DirectoryReader.Open(ram); IndexSearcher searcher = new IndexSearcher(dr); ScoreDoc[] hits = searcher.Search(q, 100).ScoreDocs; for (int i = 0; i < hits.Length; i++) { var doc = searcher.Doc(hits[i].Doc); Debug.WriteLine(DateTime.ParseExact(doc.Get("date"), "yyyyMMddHHmmss", null)); } }
2020/07/17 8:00:00
2020/07/18 8:00:00
・インデックスを使わない検索なので、すぐにでも検索を実行できる。
・大量ドキュメントの検索では膨大な時間がかかる。
利用例)grepコマンド
・検索を実行する前にインデックスを作成しておく必要がある。・大量ドキュメントでも高速に検索することができる。
1.形態素解析を行う
①.分割
すもも/も/もも/も/もも/の/うち
②.品詞/活用の判定
すもも(名詞)/も(助詞)/もも(名詞)/も(助詞)/もも(名詞)/の(助詞)/うち(副詞)
③.検索で不要な助詞、副詞を削除
すもも/もも
2.単語の出現頻度をカウント
文章1:「選択したドキュメントの内容をプレビュー表示します。」文章2:「Officeドキュメントをプレビュー表示します。」
選択 ドキュメント 内容 プレビュー 表示 Office 文章1 1 1 1 1 1 0 文章2 0 1 0 1 1 1
・MeCab:語や辞書、またデータベース化された言語資料であるコーパスに依存しない、汎用的な設計がMeCabの特徴です。
・JUMAN:京都大学大学院情報学研究科知能情報学専攻の黒橋・河原研究室が開発した形態素解析ツールです。Wikipediaから抽出した辞書を使用することができます。・Kuromoji:MeCab-IPADIC辞書を内包しており、Apache Lucene, Apache Solrの日本語対応の土台となっています。
・N-Gram
隣接したN個の記号毎の出現頻度を集計。
uni-gram bi-gram tri-gram 文字 度数 相対度数 文字 度数 相対度数 文字 度数 相対度数 す 1 0.083 すも 1 0.091 すもも 1 0.100 も 8 0.667 もも 7 0.636 ももも 6 0.600 の 1 0.083 もの 1 0.091 ももの 1 0.100 う 1 0.083 のう 1 0.091 ものう 1 0.100 ち 1 0.083 うち 1 0.091 のうち 1 0.100
エラー箇所にジャンプ 「Ctrl + Shift + F12」 ブレークポイント 設定/解除 「F9」 有効化/無効化 「Ctrl + F9」 ViEmu特有 「:ls」:バッファナンバーのリストを表示。 「:b2」:バッファ2のファイルを開く。 「:n」:次のバッファのファ...