在fulltextsqlquery中访问自定义爬网属性

时间:2012-05-16 12:25:46

标签: sharepoint-2010 microsoft-search-server

我的manage属性名称为e/m/BioOffice/Texte/m/BioPosition/Text。当我尝试执行以下代码时:

 string queryTxt = "SELECT URL, e/m/BioOffice/Text,e/m/BioPosition/Text FROM SCOPE() where \"scope\"='ektron25056203187' And FREETEXT(*,'" + TextBox1.Text.Trim() + "')";


                var query = new FullTextSqlQuery(searchApplicationProxy)
                {   
                    QueryText = queryTxt,
                    ResultTypes = ResultType.RelevantResults,
                    ResultsProvider = SearchProvider.Default,
                    TrimDuplicates = false,
                    EnableStemming = true
                };

                ResultTableCollection resultsTableCollection = query.Execute();
                ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];                   
                DataTable resultsDataTable = new DataTable();
                resultsDataTable.TableName = "Results";
                resultsDataTable.Load(searchResultsTable, LoadOption.OverwriteChanges);

                Label1.Text = "Total results Count : " + resultsDataTable.Rows.Count;

它给了我例外:Your query is malformed. Please rephrase your query。 请帮助我如何访问这些属性。

2 个答案:

答案 0 :(得分:1)

您好gaurav在搜索服务工具

中测试您的查询

SharePoint搜索服务工具是一个丰富的Web服务客户端,允许开发人员浏览给定SharePoint搜索SSP的范围和托管属性,使用关键字或SQL语法构建查询,提交这些查询并检查原始Web服务结果。此工具可用于排除和验证SharePoint环境的行为和配置。

你可以在codeplex中使用该工具

http://sharepointsearchserv.codeplex.com/

答案 1 :(得分:1)

由于托管属性名称中包含正斜杠('/'),Search Server会将此解释为格式错误的查询。这些属性名称应该用双引号(“)包围,以便Search Server的查询解析器按字面解释它们。(注意表达式后面的WHERE子句中如何引用'scope'属性。)

string queryTxt = "SELECT URL, \"e/m/BioOffice/Text\",\"e/m/BioPosition/Text\" FROM SCOPE() where \"scope\"='ektron25056203187' And FREETEXT(*,'" + TextBox1.Text.Trim() + "')";

我也看到您可能正在将Ektron站点与Search Server集成。我建议使用Ektron搜索API来确保您的查询格式正确。 (参考:AdvancedSearchCriteria