我有四条数据可供搜索。在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