0

現在の機能:

  • solr用語コンポーネント、パラメーターterms.prefixを使用してオートコンプリートします。
  • 地理的位置検索用のバウンディングボックス。

試したこと:

  • 私は両方のクエリを1つにまとめようとしました。ただし、地理的位置でフィルタリングする結果は得られません。むしろ、terms.prefix検索からすべてを取得します。
  • また、dismax、edismax + bbox geolocationsearchを使用してみました。プレフィックスパラメータがないため、dismaxが機能しないことはわかっています。
  • 私はグーグルで昼と夜を見て、これを理解しようとしました。
  • すべての文字がキーワードと見なされるように、フィールド名「names」に由来するのは嫌です。

どんな助けでも本当にありがたいです。

4

1 に答える 1

3

残念ながら、terms コンポーネントを発行しているフィールド以外のフィールドに基づくフィルタリングをサポートしていないため、terms コンポーネントでこれを行うことはできません。

この問題の最も簡単な解決策は、標準の requesthandler (つまり<requestHandler name="standard" class="solr.SearchHandler>) をバウンディング ボックス フィルターと共に使用することです。

fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5

用語をリストするフィールドのファセット (フィールド名が「names」であると仮定):

facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

次のようなクエリになります。

/select?q=*:*&fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5&facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

次のような結果が得られます。

<lst name="facet_counts">
  <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="name">
        <int name="maxtor">1</int>
        <int name="memory">1</int>
        <int name="mobile">1</int>
        <int name="mp500">1</int>
        <int name="mb">0</int>
        <int name="mini">0</int>
      </lst>
   </lst>
</lst>

(ファセット セクション内)

于 2011-12-08T14:11:28.013 に答える