質問

Jettyを使用してWindowsマシンでSolrを実行しています。ダウンロードしました 空間solrプラグイン 私はついに立ち上がって実行することができました。また、solrnetを使用して、ASP.NET MVCプロジェクトからSOLRに対して照会しています。

これで、私のインデックスにデータを追加すると、正常に動作するように見え、SpatialTierUpDateProcessorFactoryも同様に機能します。

問題は:

SolRNetライブラリを使用して、通常のクエリに空間クエリを追加するにはどうすればよいですか。 「外骨」パラメーターを使用して追加しようとしましたが、それはあまりうまくいきませんでした。

空間クエリとデータ範囲クエリを組み合わせようとしている私の例を以下に示します。日付範囲クエリは、空間クエリが添付されずに正常に機能します。

new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery);

その結果、solrに対する次のクエリが得られます。

(({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z])

そして、私が取り戻すエラーメッセージは次のとおりです。

リモートサーバーはエラーを返しました:(400)悪い要求。

SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars
eException: Cannot parse '(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit=
km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:09:49Z TO 2011-05-0
7T13:09:49Z])': Encountered " <RANGEEX_GOOP> "lng=-2.6257 "" at line 1, column 2
4.
Was expecting:
    "}" ...

さて、問題は、SolR Web Adminページを使用して次のクエリを実行した場合、すべてが正常に機能することです。

{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London

SolRNetを使用して空間関数を呼び出すための最良の/正しい方法は何ですか。クエリ文字列に手動でクエリのビットを何らかの形で追加する最良の方法はどうですか?

役に立ちましたか?

解決

使用 LocalParams 表現するクラス SolrのLocalParams:

solr.Query(new LocalParams {
    {"type", "spatial"},
    {"lat", "-51.5224"},
    {"long", "-2.6257"},
    {"radius", "10000"},
    {"unit", "km"},
    {"calc", "arc"},
    {"threadCount", "2"},
} + Query.Field("text").Is("London"));

これは、solrnet 0.3.0b1で利用できます。

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