none
通过WebService查询爬网的内容 RRS feed

  • 问题

  • http://demo2010a:2010/_vti_bin/search.asmx

    调用WebService查询文档(例如DOCX),按文档的内容查询(将文档内容内容作为参数传入进行查询),如果我输入文档中的两个汉字进行查询,可以查到,传入的参数长于两个汉字,则查不出,参数内容我输入十几个字符长度也可以查,是不是对汉字查询的长度有限制?

    我按标题查询的话,汉字多于2个也可以查出结果。

    代码如下:

     private void queryButton_Click(object sender, EventArgs e)
            {
                try
                {
                    // Instantiate the Web service.
                    QueryWebServiceProxy.QueryService queryService = new QueryWebServiceProxy.QueryService();
                    // Use the credentials of the user running the client application.
                    queryService.Credentials = System.Net.CredentialCache.DefaultCredentials;
                    //Execute the QueryEx method, returning the results to a DataSet
                    System.Data.DataSet queryResults = queryService.QueryEx(GetXMLString());
                    // Set the DataGridView data source to the first table in the DataSet oject, which contains the relevant results.
                    resultsGrid.DataSource = queryResults.Tables[0];
                }
                catch (Exception ex)
                {
                    resultsLabel.Text = ex.ToString();
                }

            }

            private string GetXMLString()
            {
                /*
                   The proceeding six lines of code is actually one line of code.
                   It is separated into four lines here for readability.
                   You will need to remove the line breaks when you copy the code to your project.
                */
                StringBuilder xmlString = new StringBuilder("<QueryPacket xmlns='urn:Microsoft.Search.Query'><Query><SupportedFormats><Format revision='1'> urn:Microsoft.Search.Response.Document:Document</Format></SupportedFormats><Context><QueryText language='en-US' type='STRING'>");
                xmlString.Append(queryTextBox.Text);
                xmlString.Append("</QueryText></Context></Query></QueryPacket>");
                return xmlString.ToString();
            }

    如果不太明白意思的可以加我MSN聊

    MSN:haitao_song@hotmail.com


    2011年5月10日 9:35

答案

全部回复

  • Hi song hai tao,

     

    根据你的描述,我想你的站点应该是中文的,如果是的话,你可以试着去掉<QueryText >中的language='en-US' 属性。如果不指定该属性,则默认为站点当前语言。

    更多参考:

    http://msdn.microsoft.com/en-us/library/ms573544.aspx

     

    Thanks,

    Porter Wang

    2011年5月12日 3:36
    版主
  • Hi Porter Wang

        我的站点是英文的,用的是微软提供的虚机,如果我把文档内容中的一句中文作为参数查询,则查不到,如果只输入内容中的两个字就可以查到。但是我的文档title里面也有多个中文字,我把title中的多个中文字作为参数也可以查出文档,不明白这是为什么

    2011年5月12日 5:57
  • Hi Porter Wang

          我能在中文论坛和英文论坛上发相同的帖子吗?

    宋海涛

    2011年5月12日 6:19
  • hi song,

        可以,但要用英文。

    regards,

    porter wang

    2011年5月12日 6:31
    版主
  • Hi song hai tao,

     

    如果是英文站点的话,而且你提到文档内容中的一句中文作为参数’, 对于关键字查询,搜索引擎是对‘词’和‘短语’有不同‘照顾’的,你可以试着将那句话用英文双引号括起来。

    更多参考:

    http://msdn.microsoft.com/en-us/library/ff394619.aspx

     

    Thanks,

    Porter Wang

    2011年5月12日 6:42
    版主