【发布时间】:2010-11-26 01:20:56
【问题描述】:
我正在运行 Zend_Search_Lucene,它与普通的 Lucene 几乎完全相同。我将商店保存在我的 Lucene 索引中,他们持有这个:
id of store for sql - 'store_id' of field type keyword
name of store - 'name' of field type text
latitude of store - 'lat' of field type keyword
longitude of store - 'lng' of field type keyword
我只有一个商店要在数据库中进行测试。它的名字叫“the super awesome store”,索引是 11,lat 是 73.9,lng 是 40.6。但是,结果并没有发挥应有的作用。
以下是我的一个无效查询示例:
(name:'awesom*') AND lat:[-74.486951 TO -73.486951] AND lng:[40.256054 TO 41.256054]
* 应该代表“然后是你想要的任何东西”,它不会返回商店。如果我命名为“awesome*”,它将正确返回。我不知道如何让它搜索 awesomatic/awesome/etc。
我的另一个问题是 lat 和 lng 搜索也不起作用。无论 lat 或 lng 的跨度是多少,它们似乎都无关紧要。即使我输入了中国的纬度/经度,只要名称匹配,它就会返回结果。如果 lat 和 lng 在正确的范围内,我需要它只返回结果。
我做错了什么?!请帮忙!
【问题讨论】:
-
猜测一下,因为 lat 和 long 是键入“关键字”而不是数字类型,可能无法正确对它们进行“TO”查询?
-
它们应该是什么字段类型?那是唯一对我来说似乎有意义的。
-
我之前发表评论而不是答案的原因是我不知道。我使用 Solr 而不是裸 Lucene,在 Solr 中我会使用 solr.FloatField,但我不知道在 Lucene 中这意味着什么。
-
好的,当我取出 lat/lng 部分时,第一部分就可以了。所以这一定是浮动无法正常工作的原因。
标签: php zend-framework search lucene