簡體   English   中英

Solr 4空間查詢過濾器仍然返回超出范圍的文檔

[英]Solr 4 Spatial Query Filter still returns documents out of range

目標是按分數然后按距離進行多重排序,並將半徑限制為0.14度,我執行以下查詢:

localhost:8983/solr/coll1/select?sortsq={! score=distance}locations:"Intersects(Circle(34.0031792,-118.3082034 d=0.14))"&fl=score,distdeg:query($sortsq),*&facet=true&sort=score desc,query($sortsq) asc&indent=on&wt=xml&version=2.2&rows=10&start=0&q=text:*&facet.field=xxxxx&fq=fieldname:"filterValue"

返回所有與查詢匹配的文檔,無論文檔是否在圓內,但在0.14度以內的文檔將返回距離(distdeg),而其他文檔則不返回該字段。

如何省略不相交的文檔?

位置字段聲明:

<fieldType name="geo_field"   class="solr.SpatialRecursivePrefixTreeFieldType"
               spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
               distErrPct="0.025"
               maxDistErr="0.000009"
               units="degrees"
 />

更新:查詢的工作版本

http://localhost:8983/solr/coll1/select?getDist={! score=distance}locations:"Intersects(Circle(34.0031792,-118.3082034 d=0.14))"&fl=score,distdeg:query($getDist),*&facet=true&sort=score desc&indent=on&wt=xml&version=2.2&rows=10&start=0&q=*:*&boost=query({! score=distdeg filter=false v=$getDist)&fq=locations:"Intersects(Circle(34.0031792,-118.3082034 d=0.14))",states:"CA"

您實際上根本沒有進行空間過濾。 solr搜索根據'q'(來自用戶的查詢字符串;它為得分)和'fq'(過濾器查詢,不得分)對文檔進行匹配,其他都沒有。 您的“ q”或“ fq”都不是指您放入sortsq參數中的空間過濾器。 參見文檔: http : //wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4#Search

您的q = text:*很奇怪; 你打算做什么 所有文件? 該查詢似乎可以工作,但不能執行,因為它沒有按照您認為的那樣進行; 它會查找在該字段中具有任何值的所有文檔(計算速度較快),而並非所有文檔都是必需的。 最佳實踐是defType = edismax和q.alt = *:*和qf = text(假設這是您的文本搜索字段),如果您沒有要提供的查詢字符串,則將匹配所有文檔。

順便說一下,將分數與其他任何事物進行排序都沒有任何意義。 浮點值的種類繁多,因此很少會查詢距離。 您可能想通過距離來提高分數。 這是一個示例:&boost = query({!score = recipDistance filter = false v = $ spatialfilter})(用對空間過濾器進行空間搜索的參數名稱代替)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM