سؤال

هل سيكون من الممكن من خلال C# إجراء بحث Windows فعليًا (الشخص الذي تجده في Vista من القائمة مع Higlighting (على سبيل المثال تكتب "النار" والحصول على "Firefox")).

شكرًا :)

هل كانت مفيدة؟

المحلول

نعم ، هذا ممكن مع واجهة برمجة تطبيقات Windows Desktop Search (WDS). ستحتاج إلى SDK, ، والتي توفر حتى مجموعة .NET إذا كنت أتذكر بشكل صحيح. ثم انظر وثائق لمعرفة كيفية الاستعلام عن مؤشر WDS. الأمر بسيط للغاية ، إليك مثال C# الذي يقدمونه:

OleDbConnection conn = new OleDbConnection(
    "Data Source=(local);Initial Catalog=Search.CollatorDSO;Integrated Security=SSPI;User ID=<username>;Password=<password>");

OleDbDataReader rdr = null;

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT Top 5 System.ItemPathDisplay FROM SYSTEMINDEX", conn);

rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    Console.WriteLine(rdr[0]);
}

rdr.Close();
conn.Close();

عندما استخدمت هذا في مرة أخرى ، تم تصميم سلسلة الاستعلام التي استخدمتها شيئًا كهذا:

CSearchManager SearchManager = new CSearchManager();
CSearchCatalogManager CatalogManager = SearchManager.GetCatalog("SystemIndex");
CSearchQueryHelper QueryHelper = CatalogManager.GetQueryHelper();
string connection_string = QueryHelper.ConnectionString;

ثم لإجراء بحث بسيط عن الملف:

QueryHelper.QueryWhereRestrictions = "AND scope='file:'";
QueryHelper.QuerySorting = "System.ItemNameDisplay ASC";
string sqlQuery = QueryHelper.GenerateSQLFromUserQuery(Filename);

من الوثائق ، يمكنك معرفة كيفية بناء استفسارات تحصل على النتائج التي تحتاجها.

الآن ، ملاحظة سريعة. لقد تمكنت من إنشاء استنساخ بحث في برنامج Vista ، ومع ذلك ، قمت بذلك عن طريق المسح الأول لملفات الارتباط ابدأ القائمة) ، ثم يؤدي تحميل WDS بشكل غير متزامن إلى الخلفية ، والتي تتكرر في بدء سلوك البحث بشكل أفضل من الاعتماد فقط على WDS.

نصائح أخرى

يستخدم Windows Search فهرسًا لتحقيق النتائج من خلال الاستعلام عن الفهرس حيث يتم تحديث النص في حقل البحث. لكي يعمل هذا ، يجب أن يكون المحرك قادرًا على إرجاع النتائج بسرعة كبيرة ، لذا فإن المجموعة التي تعتبر فعالة للغاية بالنسبة للبحث فكرة جيدة.

يمكنك بعد ذلك الاستعلام عن علامة التجزئة عندما يتغير النص في مربع البحث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top