質問

Solr 4を実装して使用しました。Solr4は素晴らしいと言わざるを得ません!とにかく、私は距離で正常にソートされ、ジオフィルターを使用して結果を特定の領域に制限しました。私が今やりたいのは、距離の逆の関連スコアを高めることです。このページはそれについて説明していますが、それを行う方法はありません(http://wiki.apache.org/solr/spatialsearch)

私は次のことを試しましたが、それは私にエラーを与えます:

http://localhost:8983/solr/select/?q={!boost b=recip(geodist(), 1, 1000, 1000)}...

私が得るエラーは次のとおりです。

org.apache.lucene.queryParser.ParseException: Expected identifier at pos 27 str='{!boost b=recip(geodist(), 1, 10 in ...

どんな助けも感謝します。ありがとう!

役に立ちましたか?

解決

ブースト関数の後、クエリの主要部分を指定する必要があります。

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&...

距離の逆方向にブーストすることに興味がある場合は、ワイルドカードクエリを使用できます。

q={!boost b=recip(geodist(),1,1000,1000)}*&...

...または、関数クエリパーサーを使用します。

q={!func}recip(geodist(),1,1000,1000)&...

また、Geodist関数の引数として照会するには、lat/long値と空間フィールドを指定する必要があります。

q={!boost b=recip(geodist(50.1, -0.86, myGeoField),1,1000,1000)}foo:bar&...

...またはクエリ文字列パラメーターとして因数分解されます:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&sfield=myGeoField&pt=50.1,-0.86

他のヒント

私がより良い結果を得ることを追加するために...

{!boost b=recip(geodist(),1,100,10)}

何がこれを引き起こすのかわかりませんが、Solrがレシピとブーストのパラメーターに関するもう少し情報を提供したいと思います。現在のドキュメント 欠けています。

サイドノートとして、ここに私の職場で使用される距離ブーストがあります。 Solrドキュメントサイトのものとは異なります。このブースト関数は、ブーストが始まる前に、数キロメートルの距離を均等に扱います。これは、距離のわずかな違いの関連性の変化を望まない状況によっては役立ちます。

定数を変更できます 25 ブーストを同じにしたいキロメートル数になること。

距離ブーストを定義できます。

div(1.0, min(1000, max(25, geodist())))

distance boost plot

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top