1

特定のフィールドで明示的に一致するドキュメントが最初に返され、その後に他の一致するドキュメントが昇順で返されるように、クエリの結果をソートまたはスコアリングする方法を決定しようとしています。

Solr の Spatial チュートリアルで使用されている例に従って、次のような (疑似) ストアがいくつかあるとします。

<Store>
  <Id>1</Id>
  <Coords>10,-15</Coords>
  <PostalCode>12345</PostalCode>
  <ServiceArea>
    <PostalCode>12345</PostalCode>
    <PostalCode>23456</PostalCode>
  </ServiceArea> 
</Store>

<Store>
  <Id>2</Id>
  <Coords>11,-16</Coords>
  <PostalCode>23456</PostalCode>
  <ServiceArea>
    <PostalCode>12345</PostalCode>
    <PostalCode>23456</PostalCode>
  </ServiceArea> 
</Store>

ということで、2店舗。それぞれに独自の郵便番号があり、それぞれが互いの郵便番号にサービスを提供しています。今、私は何かを照会したいと思います:

Find stores which service PostalCode 12345
Ordered by stores in PostalCode 12345 first
Then ordered by ascending distance from PostalCode 12345

私はこれをStandardQueryParser.

4

1 に答える 1

2

並べ替えの指定には、次を使用します。

sort=query({!field f=PostalCode v=12345})+desc,geodist()+asc

フィールド、スコア、および関数クエリで並べ替えることができます。上記のように、関数クエリは多くの可能性を開き、"query()" 関数クエリはさらに可能性を広げます。query() は、その中のクエリのスコアを返します。この場合、特定の値を持つフィールドの検索です。「フィールド」クエリ パーサーを使用することにしましたが、{!v="PostalCode:12345"} を使用することもできます。

ちなみに、'pt' や 'sfield' など、geodist() の他のパラメータも忘れないでください。

于 2013-02-04T16:31:07.740 に答える