1

以下のクエリでは、間違った結果数が返されます。

<options xmlns="http://marklogic.com/appservices/search">     
  <constraint name="Keyword">
    <range type="xs:string" 
           facet="true" 
           collation="http://marklogic.com/collation/">
      <element ns="" name="keyword"/>
      <facet-option>frequency-order</facet-option>
      <facet-option>descending</facet-option>
      <facet-option>limit=1</facet-option>
    </range>
  </constraint>
</options>;
let $query-text  := "pankaj!"
let $response := search:search($query-text, $query-options1)
return $response

「パンカジ!」という言葉はありません。私のML DBでは、33の応答が得られます。33 は単語「pankaj」には当てはまりますが、「pankaj!」には当てはまりません。「!」クエリ テキストから削除されています。

<search:response snippet-format="snippet" 
  total="33" 
  start="1" 
  page-length="10" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns="" 
  xmlns:search="http://marklogic.com/appservices/search"> 

term-option を設定して正しい結果を得る方法を教えてください。

ありがとう。

4

3 に答える 3

4

wst と mblakele の両方に有用なコメントがありますが、コードにはまだ 1 つの問題があります。フィールド検索に使用できるファセットを宣言します。しかし、あなたはそれを使用していません。検索語の前に「キーワード:」を追加する必要があります。

そうしないと、検索用語が単語クエリとして扱われ、mblakele が説明するように句読点が削除されます。検索語がキーワード要素の外にもある場合は、接頭辞を使用するとカウントが改善されます。本当に欲しいものを手に入れるには、wst と Will から句読点を区別するように追加するためのヒントもおそらく価値があります..

チッ!

于 2013-05-30T19:49:10.403 に答える
1

これにより、感嘆符 (または任意の句読点) が強制的に一致されます。

<term>
  <term-option>punctuation-sensitive</term-option>
</term>

http://marklogic.com/collation//S4また、その制約に使用される範囲インデックスの構成で、句読点に依存する照合 ( ) を使用することをお勧めします。

于 2013-05-30T18:44:15.410 に答える