1

たとえば、次のような異なるコレクションのいずれかに属する 5 つのドキュメントがあるとします。

Biography, Fiction, Humour, Adventure 

たとえば、ドキュメント 1 はAdventure Collection にあります。

<Book>
<title>Harry Potter and the Deathly Hallows</title>
<Author>J.K.Rowling</Author>
<year>2007</year>
</Book>

文書 2 は伝記コレクションにあります。

<Book>
<title>Steve Jobs</title>
<Author>Walter Issacson</Author>
<year>2011</year>
</Book>

year今、要素に提案を適用したいと思います。これをコレクションに適用したい。たとえば、バイオグラフィー コレクションに example-suggest を適用したい。要素範囲インデックスを定義しyear、アプリケーション ローダーを使用してサンプル ドキュメントを取り込み、ドキュメント設定でドキュメントのコレクションを構成した。

以下は私のXQUERYコードです:

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
    at "/MarkLogic/appservices/search/search.xqy";

let $options := 
<options xmlns="http://marklogic.com/appservices/search">
 <constraint name="Group">
    <collection prefix="Biography/"/>
 </constraint>

 <suggestion-source ref="Group">
   <range collation="http://marklogic.com/collation/" 
          type="xs:string" >
      <element name="year"/>
   </range>
 </suggestion-source>
 </options>
return    
search:suggest("Group:20", $options)  

このクエリを実行すると、2011 年2007 年の両方の提案が得られますが、これは私が期待しているものではありません。予想される提案は2011です(コレクションのみBiographyを検索する必要があるため)。search: suggestでこのドキュメントを参照しましたが、正確に何が間違いなのかを見つけることができません。私はどこで間違っていますか?

4

2 に答える 2

3

シュリー:

提案ソースの値は、参照された制約の値に置き換えられます。言い換えれば、オプションは、グループ制約によって修飾された入力が、あなたが見ているものである年の範囲のインデックスから来るべきであることを示しています. 詳細については、次を参照してください。

http://docs.marklogic.com/guide/search-dev/search-api#id_40748

一連の提案をフィルタリングするには、2 つの文字列クエリで search:suggest() を呼び出すことができます。1 つ目は、提案の入力を提供します。2 つ目は、フィルタリングの制約を提供します。上記の場合、フィルタリングの制約は Biography コレクションになります。詳細については、次を参照してください。

http://docs.marklogic.com/guide/search-dev/search-api#id_91911

それが役立つことを願って

于 2013-10-18T16:07:38.203 に答える