2012-08-01 61 views
1

我有四條數據可供搜索。在Solr搜索位置

鎮,市,郵編,國家

什麼是我可以讓這些結果搜索通過以下任一方式的最佳途徑:

  • 倫敦,英格蘭
  • 斯溫頓,英格蘭威爾特郡
  • 英格蘭威爾特郡
  • 英格蘭
  • 威爾特
  • 斯溫頓

我可以標準化數據,但當時如果有人搜索簡單的「倫敦」我會得到重複的結果。

如果我只有「倫敦,英格蘭」存儲,但不只是「倫敦」,那麼如果有人搜索「倫敦」,它不會找到任何結果。

它的一個catch22。在用戶搜索時,應該如何存儲地址以實現靈活性?

+1

如果您有「倫敦,英格蘭」索引,搜索「倫敦」將匹配。你可以添加一些你有的數據樣本,而不僅僅是查詢嗎? – Fuxi 2012-08-01 10:49:24

回答

0

最好的方法是使用solr空間搜索功能http://wiki.apache.org/solr/SpatialSearch/但需要訪問映射數據服務,該服務可以返回位置的緯度/經度並將其存儲在solr記錄中。然後在搜索中進行相同的查找以獲得緯度/經度,並且與搜索位置上的文本相比,您將能夠進行半徑搜索並獲得更準確的結果。

0

最好遵循先前答案的建議。 你應該添加一個字段位置 和配置的schema.xml

加入部分<fieldType>

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

加入部分<field>

<field name="location" type="location" indexed="true" stored="true" required="true" /> 

<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false"/> 

現在更新索引的Solr/dataimport?命令=德爾塔進口

可以讓您的查詢& Q = :{!geofilt PT = 45.15,-93.85元數=店d = 5} & FQ =

http://wiki.apache.org/solr/SpatialSearch http://wiki.apache.org/solr/SpatialSearchDev

0

如果您沒有可用的地理空間數據,你可以試試Herarchical Faceting。它的索引以特定的方式中的數據,使層次結構中的查詢,例如:

Document: England > London > Chelsea 

Index: 0/England, 1/England/London, 2 England/London/Chelsea 

Query: facet.field = category, facet.prefix = 1/London, facet.mincount = 1 

有一個在指數一定的冗餘,但它應該是在多數情況下可以忽略不計。