كيفية إضافة solr المكانية إلى استعلام solrnet

StackOverflow https://stackoverflow.com/questions/2788450

  •  04-10-2019
  •  | 
  •  

سؤال

أقوم بتشغيل Solr على جهاز Windows الخاص بي باستخدام Jetty. لقد قمت بتنزيل البرنامج المساعد المكاني SOLR التي تمكنت أخيرًا من الاستيقاظ والتشغيل. أنا أيضًا أستخدم Solrnet للاستعلام ضد SOLR من مشروع ASP.NET MVC الخاص بي.

الآن ، يبدو أن إضافة البيانات إلى الفهرس الخاص بي يعمل بشكل جيد ، كما أن spatialtierupdateProcessorFactory يعمل أيضًا.

المشكلة هي:

كيف يمكنني إضافة الاستعلام المكاني إلى استعلامي الطبيعي باستخدام مكتبة Solrnet. لقد حاولت إضافته باستخدام معلمة "extraparams" ولكن هذا لم ينجح بشكل جيد للغاية.

فيما يلي مثال على محاولة الجمع بين الاستعلام المكاني مع استعلام نطاق البيانات. يعمل استعلام النطاق التاريخ بشكل جيد دون الاستعلام المكاني المرفق به:

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 وتنفيذ الاستعلام التالي مقابله ، كل شيء يعمل بشكل جيد.

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

ما هي الطريقة الأفضل/الصحيحة للاتصال بالوظيفة المكانية باستخدام Solrnet. هل هي أفضل طريقة لإضافة هذا الشيء من الاستعلام يدويًا إلى سلسلة الاستعلام وكيف هكذا؟

هل كانت مفيدة؟

المحلول

استخدم ال LocalParams فئة لتمثيل LocalParams في Solr:

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