0

我的管理属性命名为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。请帮助我如何访问这些属性。

4

2 回答 2

1

嗨 gaurav 在搜索服务工具中测试您的查询

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

您可以在 codeplex 中使用该工具

http://sharepointsearchserv.codeplex.com/

于 2012-05-16T12:30:32.683 回答
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

于 2013-01-21T16:22:50.343 回答