<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sleepiness in Seattle &#187; search</title>
	<atom:link href="http://stanblog.jojoyao.com/tag/search/feed/" rel="self" type="application/rss+xml" />
	<link>http://stanblog.jojoyao.com</link>
	<description>Stanley&#039;s Chat on the Technology and Business</description>
	<lastBuildDate>Tue, 21 Apr 2009 04:29:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Use Windows Desktop Search API Inside of Managed Code</title>
		<link>http://stanblog.jojoyao.com/2007/04/use-windows-desktop-search-api-inside-of-managed-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=use-windows-desktop-search-api-inside-of-managed-code</link>
		<comments>http://stanblog.jojoyao.com/2007/04/use-windows-desktop-search-api-inside-of-managed-code/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 14:10:36 +0000</pubDate>
		<dc:creator>Stanley Yao</dc:creator>
				<category><![CDATA[Search Engine]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[desktop search]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://stanblog.jojoyao.com/newblog/?p=34</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<div style="MARGIN: 0in 0in 10pt"><font face="Calibri">Starting from Windows Desktop Search (WDS) 3.0, a new helper API ISearchQueryHelper is added to help simplify the construction of index OLE DB connection string and search queries.&nbsp;The search service is implemented and the API is exposed as COM objects.&nbsp;Fortunately, there is a way for managed code to invoke the WDS too.</font></div>
<div style="MARGIN: 0in 0in 10pt"><font face="Calibri"><a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=645300ae-5e7a-4ce7-95f0-49793f8f76e8&amp;displayLang=en">Download</a> the Windows Search SDK.&nbsp;After unzip the package, the search interop assembly (Microsoft.Search.Interop.dll) is in the &quot;Managed&quot; folder.&nbsp;Add it to the reference inside of your solution and put &ldquo;</font><span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">using</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> Microsoft.Search.Interop;</span><font face="Calibri"> &rdquo; at the top of your C# code.&nbsp;Now it&rsquo;s ready to write C# code and make use of WDS API.&nbsp;Some of the unmanaged and managed counterparts of classes are the following:</font></div>
<div align="center">
<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 90%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="80%" border="1">
<tbody>
<tr>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 179.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="239">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><strong><font face="Calibri">Unmanaged</font></strong></div>
</td>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ffffff; WIDTH: 203.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="272">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><strong><font face="Calibri">Managed</font></strong></div>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 179.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="239">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">ISearchManager</font></div>
</td>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ffffff; WIDTH: 203.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="272">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">CSearchManager</font></div>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 179.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="239">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">ISearchCatalogManager</font></div>
</td>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ffffff; WIDTH: 203.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="272">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">CSearchCatalogManager</font></div>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 179.25pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="239">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">ISearchQueryHelper</font></div>
</td>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ffffff; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ffffff; WIDTH: 203.8pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="272">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><font face="Calibri">CSearchQueryHelper</font></div>
</td>
</tr>
</tbody>
</table>
</div>
<div style="MARGIN: 0in 0in 10pt">&nbsp;</div>
<div style="MARGIN: 0in 0in 10pt"><font face="Calibri">The following sample code constructs a search query using ISearchQueryHelper to display the sender, recipients, and summary of the first 100 emails that contain a particular keyword (&ldquo;share&rdquo; in this example). </font></div>
<div align="center">
<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 90%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="80%" border="1">
<tbody>
<tr>
<td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 6.65in; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" valign="top" width="638">
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">int maxSumLength = 100;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">// Setup the catalog and search query helper</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">CSearchManager srchMngr = new CSearchManager();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">CSearchCatalogManager srchCatMngr = srchMngr.GetCatalog(&quot;SystemIndex&quot;);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">CSearchQueryHelper srchQueryHelper = srchCatMngr.GetQueryHelper();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">// Assemble the query</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">srchQueryHelper.QuerySelectColumns = &quot;System.Message.FromAddress, System.Message.ToAddress, System.Search.AutoSummary&quot;;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">srchQueryHelper.QueryWhereRestrictions = &quot;AND CONTAINS(System.Kind, &#8216;\&quot;email\&quot;&#8217;)&quot;;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">string sqlQuery = srchQueryHelper.GenerateSQLFromUserQuery(&quot;share&quot;);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">// Setup the OLE DB connection</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">OleDbConnection conn = new OleDbConnection(srchQueryHelper.ConnectionString);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">conn.Open();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">// Execute the query</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">OleDbCommand cmd = new OleDbCommand(sqlQuery, conn);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">OleDbDataReader srchResult = cmd.ExecuteReader();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">// Process the search result and send to output</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">for (int i = 0; (i &lt; 100) &amp;&amp; srchResult.Read(); ++i)</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">{</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string fromAddr = &quot;&quot;;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string toAddr = &quot;&quot;;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sumAddr = &quot;&quot;;</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (null != srchResult.GetValue(0) &amp;&amp; !(srchResult.GetValue(0) is System.DBNull))</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; string[] addrs = (string[])srchResult.GetValue(0);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fromAddr = &quot;From: &quot; + System.String.Join(&quot;,&quot;, addrs);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (null != srchResult.GetValue(1) &amp;&amp; !(srchResult.GetValue(1) is System.DBNull))</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; string[] addrs = (string[])srchResult.GetValue(1);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toAddr = &quot;To: &quot; + System.String.Join(&quot;,&quot;, addrs);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (null != srchResult.GetValue(2) &amp;&amp; !(srchResult.GetValue(2) is System.DBNull))</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sumAddr = (string)srchResult.GetString(2);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBox1.AppendText(&quot;(&quot; + i + &quot;) &quot;);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBox1.AppendText(fromAddr + &quot; &quot; + toAddr + &quot; &quot;);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBox1.AppendText(&quot;Content: &quot; + (sumAddr.Length &lt;= maxSumLength ? sumAddr : sumAddr.Substring(0, maxSumLength)));</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBox1.AppendText(Environment.NewLine);</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">}</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left">&nbsp;</div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">srchResult.Close();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal" align="left"><span style="FONT-SIZE: 10pt"><font face="Calibri">conn.Close();</font></span></div>
<div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></div>
</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stanblog.jojoyao.com/2007/04/use-windows-desktop-search-api-inside-of-managed-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Possible Google Phone?</title>
		<link>http://stanblog.jojoyao.com/2007/03/possible-google-phone/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=possible-google-phone</link>
		<comments>http://stanblog.jojoyao.com/2007/03/possible-google-phone/#comments</comments>
		<pubDate>Wed, 14 Mar 2007 08:04:06 +0000</pubDate>
		<dc:creator>Stanley Yao</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://stanblog.jojoyao.com/newblog/?p=23</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://searchengineland.com/070313-083453.php" title="More Pictures Of Possible Google Phone?">More Pictures Of Possible Google Phone?</a></p>
<p>Wireless platform would be the next battle field of searching.  The day of &quot;technology&quot; is past.  In those days computers and software were invented to help people do more things faster.  Those things is mostly about information processing.  Given a bunch of input and the computers will follow the instructions embedded in the software and produce the expected results.  When network was invented to connect computers, it was about transmitting information faster on a much wider scope.</p>
<p>Today, with the already advanced computing and world wide web as the infrastructure, almost all computer technologies are about information and people.  Finding the right intelligence and talents.  Sitting in front of a desktop or looking for a Wi-Fi hot spot for laptop connection is not efficient enough.  A more mobile and slim device is more desirable, so that information is right at the tip of people fingers.  Integration of wireless devices and Internet services would be really attractive.  I&#8217;m imaging the future information searching is pervasive.  For example, when you are talking with your friend on the phone and trying to set up a time to go lunch together in a new restaurant.  The wireless phone will extract keywords and address from your conversation and you could ask the phone to create this appointment by either pressing a button or saying some voice command.  After confirming this appointment, map and driving direction is created too.  And you could use it as a GPS to guide you to the venue.&nbsp; With search-enabled wireless phone, you can also ask the phone to find the closest drug store or coffee shop just by talking.&nbsp; The search-enabled phone could also be your assistant when you are talking with your friends.&nbsp; When you do not agree with some ideas in your conversation, ask the phone to do a search on the fly and join your conversation by telling you what it found.</p>
<p>Like partnering with computer manufacturers to pre-install search tool bars on the new computers.  Wireless is another competition field.  <a href="http://www.microsoft.com/windowsmobile/devices/reviews/motoq.mspx">Moto Q</a> with <a href="http://www.microsoft.com/windowsmobile/default.mspx">Microsoft Windows Mobile</a> is out there.  But I think there is still a lot that can be improved to integrate with Internet services.  I look forward to seeing what google phone will bring us.</p>
]]></content:encoded>
			<wfw:commentRss>http://stanblog.jojoyao.com/2007/03/possible-google-phone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

