問題タブ [windows-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 検索パフォーマンスを低下させることなく、C# で検索文字列を適切にサニタイズするにはどうすればよいですか?
ユーザーの入力文字列をサニタイズする必要があるのは、後で OLEDB クエリで文字列を使用してドキュメント リポジトリのインデックスを作成し、一致するファイルや説明などを見つけるためです。問題は、CONTAINS
ステートメントのクエリで特殊文字を含む文字列を使用できないことです。 .
精度を落とさずにサニタイズするために私がやっていることよりも良い方法はありますか?
私が現在行っていることは、検索文字列を取得し、正規表現を使用して検証し、[^0-9a-zA-Z\s\/\._-]+
空の文字列に置き換えて、検索文字列内のあらゆる種類の特殊文字を削除することです。
私の問題は、一部のファイルと説明に & や $ などの特殊文字が含まれていることです。特殊文字を許可しないと、検索精度が低下します。これを行うより効率的な方法はありますか?
c++ - search-ms: または search: プロトコルを使用して検索結果を IShellItem として取得する
Windows でグローバル ファイル検索結果を取得しようとしていますが、Windows Search のドキュメントは信じられないほど複雑であり、そのような単純な機能のために SQL を扱いたくありません。アプリケーションで結果アイテムを処理できるように実行search:query=%s
した後、検索結果を Windows エクスプローラーに表示することはできますか?IShellFolder
IShellItem
c# - ファイルの内容の単語/部分文字列の *一部* に対する Windows 検索クエリ
Windows Search SQL 構文を使用してプログラムで Windows Search インデックスをクエリしようとしています。
以下の検索クエリを使用して、C# winforms アプリケーションでファイルの内容を検索できます。
問題:ただし、このクエリを使用してファイル コンテンツ内の単語の一部を検索することはできません。
例: ファイル (.txt ファイルなど) に "abcd" というテキストが含まれている場合、 を検索するとFREETEXT('ab')
、そのファイルは表示されません。
私は使用してみました:
FREETEXT('ab')
FREETEXT('*ab*')
FREETEXT('\"ab\"')
FREETEXT('\"*ab*\"')
FREETEXT('*\"ab\"*')
FREETEXT('ab*')
FREETEXT('\"*ab*\"')
FREETEXT('\"ab\"*')
CONTAINS
の代わりに上記の組み合わせを使用してみましたFREETEXT
。
Windows検索でab
直接検索すると、テキストを持つファイルが表示されます
このクエリを変更して、ファイルの内容の単語の一部を検索するにはどうすればよいですか? 助けてください!
c# - Windows ファイル エクスプローラーの検索ボックスで %UserName% が機能しない
フォルダー名の一部にユーザー名が含まれるネットワーク ドライブ上のフォルダーを持つユーザーがいます。
この検索を機能するように変更するにはどうすればよいですか? kind:=フォルダ %UserName%
注: 以下は機能しますが、機能するには %username% を使用できる必要があります。
kind:=フォルダ jsmith
それがうまくいかない場合は、保存された検索を jsmith のメモ帳で編集し、「System.Windows.Forms.SystemInformation.UserName Kind:=folder」のような検索と置換を行うことはできますか?
実際、これを使用する .search-ms ファイルを作成することが私の目標です。
ありがとう!
c# - マシン名を指定すると、自分のマシンで SystemIndex を照会できません
リモートマシンに接続してインデックス作成ステータスを照会する簡単なプログラムを作成しようとしています。
これが私のマシンでそれを行うコードです。これは正常に動作します。
ただし、の代わりに呼び出すGetCatalog
と、"mycomputername.SystemIndex"
"SystemIndex"
タイプ 'System.Runtime.InteropServices.COMException' の未処理の例外が IndexStatus.exe で発生しました
追加情報: HRESULT からの例外: 0x80042103
Visual Studio 2015 は、Windows 8.1 で管理者権限で実行されています。ターゲット コンピューターは主に Windows 7 システムであり、プログラムは主に Windows 10 システムから実行されます。ここからダウンロードした Microsoft Windows Search 3.X SDK の Microsoft.Search.Interop.dll を使用しています。何か関係がある場合に備えて、ファイアウォールをオフにしましたが、どうやらそうではありませんでした。
のような完全なナンセンスで関数を呼び出すと、同じ例外が発生することを確認しました"sdfd"
。そして、私はこれを見つけました:
MSS_E_CATALOGNOTFOUND - 0x80042103 - (8451) WindowsSearchErrors.h
マシン名の代わりに「localhost」を使用しようとしましたが、役に立ちませんでした。
MSDNのドキュメントには次のように書かれています。
現在、Microsoft Windows デスクトップ サーチ (WDS) 3.0 は 1 つのカタログのみをサポートしており、SystemIndex という名前が付けられています。
これを理解する方法がわかりません。おそらく、メソッドは異なるマシンから選択することができませんか? もしそうなら、PsExec のようなものを使用する以外に、リモート カタログに接続してこれらのクエリを作成する方法はありますか?
Re Ben N の回答:これは私にとって深海になり始めていますが、恐れているというよりも魅了されています。:)いくつかの変更の後、あなたのコードは私のために働いた:
CSearchManagerClass manager = System.Runtime.InteropServices.Marshal.CreateWrapperOfType(comManager, typeof(CSearchManagerClass));
Visual Studio 2015 ではコンパイルされず、次のエラーが発生します。
2 番目のエラーは、キャストを追加するだけで簡単に修正できました。
「相互運用タイプを埋め込むことはできません」というエラー メッセージについては、この質問を見つけました。推奨される解決策は 2 つあります。
Embed Interop Types
Microsoft.Search.Interop 参照のプロパティを に変更しますFalse
。に変更
CSearchManagerClass
しCSearchManager
ます。
最初の解決策はプログラムをコンパイルしますが、移植性に影響します。これで、プログラムは .dll がインストールされていないコンピューターでは実行されなくなります。2番目のソリューションはコンパイルされますが、スローされます
タイプ 'System.ArgumentException' の未処理の例外が mscorlib.dll で発生しました
追加情報: タイプは __ComObject であるか、__ComObject から派生したものである必要があります。
自分のマシンに対して実行すると、その正確な行に。
しかし、別の問題があり、これについては私にはわかりません。同僚のマシンに対して実行すると (私は彼のコンピューターの管理者であり、Visual Studio は管理者権限で実行されています)、取得しています
タイプ 'System.UnauthorizedAccessException' の未処理の例外が mscorlib.dll で発生しました
追加情報: CLSID {7D096C5F-AC08-4F1F-BEB7-5C22C517CE39} を持つリモート コンポーネントの COM クラス ファクトリをマシン computername から取得できませんでした。次のエラーが原因でした: 80070005 computername。
私は COM についてほとんど何も知らないので、これは少し怖いです。彼のコンピューターと私のコンピューターで DCOM が有効になっていることを確認しました。しかし、コンポーネント サービスで彼のコンピュータにアクセスしようとすると、DCOM Config がツリーに表示されません。また、ドメイン上の他のコンピューターでも同じことが起こります (すべてのワークステーションで管理者権限を持っていますが)。このブログは、それがファイアウォールの問題である可能性があることを示唆しています。
あなたの答えは両方とも間違いなく報奨金に値しますが、何か提案があれば、または何が起こっているのかを明らかにすることができれば、私は非常に感謝しています. うまくいかなくてもいいのですが、ここから少しでも多くの知識を吸収したいと思っています。
python - Python を使用した Microsoft Search Index のクエリ
Windows Search Index で SQL クエリを実行する方法を探しています。
これは .NET または Powershell を使用して非常に簡単に実行できますが、何をしても Python で動作させることはできないようです。
PyODBC を使用して JET4 ドライバーに乗ってみましたが、大量のエラーが発生しました。次に、ADO 接続に win32con クライアントを使用してみましたが、うまくいきませんでした。
私はプロバイダーをいくつかの場所で提供されているとして、MSIDXS.1
またはSearch.CollatorDSO
提供されていると述べようとしましたが、EDB ファイルに直接アクセスしようとしましたが、うまくいきませんでした。
誰かがそうすることができたことがありますか、または何が問題なのか知っていますか?
参考までに、この操作を実行する Powershell および C# スクリプトのサンプルへのリンクを添付します。 -powershell - https://msdn.microsoft.com/en-us/library/windows/desktop/ff684395(v=vs.85).aspx
VB スクリプトを使用して、パラメーターとしてクエリを使用してアプローチすることもできますが、私にはかなり不自由に感じます...
編集:正しいDBに接続しているように見えますが、エラーが発生します:
私のコード:
エラー:
ありがとう!
c# - Windows Search サービス: テキスト スニップの取得
Windows Search Service を使用して、ドキュメントのメタ データをクエリして取得しますItemName
。
snip of the text
ユーザーにコンテキストを表示できるように、見つかったテキストを取得する方法はありますか?
powershell - ファイル内の Windows Search Indexed を検索する方法
Windows Search サービスによってインデックス付けされたファイルがあります。テキストファイル内の文字列を見つけることができる関数が必要です。PowerShell にスクリプトがありますが、うまくいきませんでした。
$word = "Hello"
私たちが持っているファイルで問題なく動作する場合
ただし、次のようなスペースのない Hello がある場合はそうではありません。
$word
また、"Hello World" などのフレーズも検索できません。
誰でもそれを修正する方法を知っていますか?