0

ユーザーが定義済みの値を使用して検索結果を取得するための JavaScript ツールに取り組んでいます。定義済みの値の 1 つに、アンパサンドを含む語句があります。クエリ Web サービスが値を返すように文字列をフォーマットする方法がわかりません。

var eventCat = "Conference & Events";
var dateQ = "(DateStart>='" + startDate + "' AND DateStart<='" + endDate + "') AND ";
var eventQ = " EventCategory='" + eventCat + "' AND ";
var q = "SELECT Title,Path,Description,Write,Rank,Size,DateStart,DateEnd,EventCategory,GroupOnly  FROM SCOPE() WHERE ";
q += dateQ + eventQ + " GroupOnly=false AND (\"SCOPE\"='Sales Marketing & Excellence Events')";

var queryText = makeQuery(q);

makeQueryアンパサンドを & に、< を < に、> を > に変換して、クエリ Web サービスに必要な XML を作成します。

<QueryPacket xmlns='urn:Microsoft.Search.Query' Revision='1000'>
  <Query>
    <Context>
      <QueryText language='en-US' type='MSSQLFT'>
        SELECT 
          Title,Path,Description,Write,Rank,Size,DateStart,DateEnd,EventCategory,GroupOnly  
        FROM 
          SCOPE() 
        WHERE 
          (DateStart&gt;='2014-09-28T00:00:00Z' AND DateStart&lt;='2014-11-09T23:59:59Z') AND 
          EventCategory='Conference &amp; Events' AND  
          GroupOnly=false AND 
          ("SCOPE"='Sales Marketing & Excellence Events')
      </QueryText>
    </Context>
    <IncludeSpecialTermResults>true</IncludeSpecialTermResults>
  </Query>
</QueryPacket> 

eventCat に All などの他の値がある場合、これは期待どおりに機能しますが、上記のクエリを送信すると、SharePoint はエラーを返します: An error occurred while parsing EntityName.

アンパサンドをさまざまな代替手段に置き換えようとしましたが、何も機能していません。送信する正しい形式は何ですか?

4

1 に答える 1

0

私はそれを考え出した。<[CDATA[クエリの周りに追加しました。

<QueryPacket xmlns='urn:Microsoft.Search.Query' Revision='1000'>
  <Query>
    <Context>
      <QueryText language='en-US' type='MSSQLFT'><[CDATA[
        SELECT 
          Title,Path,Description,Write,Rank,Size,DateStart,DateEnd,EventCategory,GroupOnly  
        FROM 
          SCOPE() 
        WHERE 
          (DateStart>='2014-09-28T00:00:00Z' AND DateStart<='2014-11-09T23:59:59Z') AND 
          EventCategory='Conference & Events' AND  
          GroupOnly=false AND 
          ("SCOPE"='Sales Marketing & Excellence Events')
      ]]></QueryText>
    </Context>
    <IncludeSpecialTermResults>true</IncludeSpecialTermResults>
  </Query>
</QueryPacket>
于 2014-10-01T19:00:29.253 に答える