我的manage属性名称为e/m/BioOffice/Text
,e/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
。
请帮助我如何访问这些属性。
答案 0 :(得分:1)
您好gaurav在搜索服务工具
中测试您的查询SharePoint搜索服务工具是一个丰富的Web服务客户端,允许开发人员浏览给定SharePoint搜索SSP的范围和托管属性,使用关键字或SQL语法构建查询,提交这些查询并检查原始Web服务结果。此工具可用于排除和验证SharePoint环境的行为和配置。
你可以在codeplex中使用该工具
答案 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)