我有四條數據可供搜索。在Solr搜索位置
鎮,市,郵編,國家
什麼是我可以讓這些結果搜索通過以下任一方式的最佳途徑:
- 倫敦,英格蘭
- 斯溫頓,英格蘭威爾特郡
- 英格蘭威爾特郡
- 英格蘭
- 威爾特
- 斯溫頓
我可以標準化數據,但當時如果有人搜索簡單的「倫敦」我會得到重複的結果。
如果我只有「倫敦,英格蘭」存儲,但不只是「倫敦」,那麼如果有人搜索「倫敦」,它不會找到任何結果。
它的一個catch22。在用戶搜索時,應該如何存儲地址以實現靈活性?
我有四條數據可供搜索。在Solr搜索位置
鎮,市,郵編,國家
什麼是我可以讓這些結果搜索通過以下任一方式的最佳途徑:
我可以標準化數據,但當時如果有人搜索簡單的「倫敦」我會得到重複的結果。
如果我只有「倫敦,英格蘭」存儲,但不只是「倫敦」,那麼如果有人搜索「倫敦」,它不會找到任何結果。
它的一個catch22。在用戶搜索時,應該如何存儲地址以實現靈活性?
最好的方法是使用solr空間搜索功能http://wiki.apache.org/solr/SpatialSearch/但需要訪問映射數據服務,該服務可以返回位置的緯度/經度並將其存儲在solr記錄中。然後在搜索中進行相同的查找以獲得緯度/經度,並且與搜索位置上的文本相比,您將能夠進行半徑搜索並獲得更準確的結果。
最好遵循先前答案的建議。 你應該添加一個字段位置 和配置的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
如果您沒有可用的地理空間數據,你可以試試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
有一個在指數一定的冗餘,但它應該是在多數情況下可以忽略不計。
如果您有「倫敦,英格蘭」索引,搜索「倫敦」將匹配。你可以添加一些你有的數據樣本,而不僅僅是查詢嗎? – Fuxi 2012-08-01 10:49:24