0

次のコードで共有ポイント検索をクエリしようとしています

    protected ResultTable Search(String query, SPWeb currentWeb)
    {
        ResultTable rt = null;

        try
        {
            FullTextSqlQuery q = GetFullTextSqlQuery(currentWeb);

            q.QueryText = query;

            q.RowLimit = int.MaxValue;
            rt = ((ResultTableCollection)q.Execute())[ResultType.RelevantResults];
            //q.Dispose();

        }
        catch (Exception ex)
        {
            rt = null;
            Logging.LogException(ex);
        }

        return rt;
    }

    /// <summary>
    /// Create base FullTextSqlQuery
    /// </summary>
    /// <returns>FullTextSqlQuery</returns>
    protected static FullTextSqlQuery GetFullTextSqlQuery(SPWeb currentWeb)
    {
        FullTextSqlQuery q = new FullTextSqlQuery(currentWeb.Site);

        q.Culture = new CultureInfo(1033);

        q.EnableStemming = false;
        q.TrimDuplicates = true;

        if (SPSecurity.AuthenticationMode != System.Web.Configuration.AuthenticationMode.Windows)
        {
            q.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;
        }
        else
        {
            q.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery;
        }

        q.RowLimit = 200;

        q.StartRow = 0;
        q.IgnoreAllNoiseQuery = false;
        q.ResultTypes = ResultType.RelevantResults;

        return q;

    }

そして、私が何をしても、この例外が発生します: HRESULT からの例外: 0x80040E01

23-07-2012 14:53:45 Documenten Search System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail] HRESULT からの例外: 0x80040E01

サーバー スタック トレース: System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood (メッセージ応答、MessageFault フォールト、文字列アクション、MessageVersion バージョン、FaultConverter faultConverter) で System.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime 操作、ProxyRpc& rpc) で System. System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage メソッド呼び出し、ProxyOperationRuntime 操作) で System.ServiceModel.Channels.ServiceChannel.Call(文字列アクション、ブール一方向、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、TimeSpan タイムアウト)。 ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ)

[0] で例外が再スローされました: Microsoft.Office の System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 タイプ) で System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) で。 Microsoft.Office.Server.Search.Administration.SearchServiceApplicationProxy の Server.Search.Query.ISearchQueryServiceApplication.Execute (QueryProperties プロパティ)。 DoSpLoadBalancedUriWsOp[T](WebServiceBackedOperation1 webServiceCall, Int32 timeoutInMilliseconds, Int32 wcfTimeoutInMilliseconds, String operationName) at Microsoft.Office.Server.Search.Administration.SearchServiceApplicationProxy.DoWebServiceBackedOperation[T](String operationName, Int32 timeoutInMilliseconds, Int32 wcfTimeoutInMilliseconds, WebServiceBackedOperationRapportages.RapportageDocumenten.RapportageDocumenten.Search(文字列クエリ、SPWeb現在のウェブ)

行制限を減らすべきであるという提案を読みましたが、行制限が20まで低くてもこの例外が発生します。

4

1 に答える 1

0

を使用して fulltextsqlquery を配置すると、問題が修正されました。理由を聞かないでください。

                   using (FullTextSqlQuery q = GetFullTextSqlQuery(web))
                    {
                        q.QueryText = sqlQuery.ToString();
                        rt = ((ResultTableCollection)q.Execute())[ResultType.RelevantResults];
                        Logging.LogMessage(rt.RowCount.ToString());
                    }
于 2012-08-03T11:45:01.177 に答える