【问题标题】:What's wrong with my Lucene query?我的 Lucene 查询有什么问题?
【发布时间】: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


【解决方案1】:

请参阅this question 了解 Lucene 中的地理搜索。我相信索引和搜索浮点值是行不通的。尝试制作这些大的零填充整数。 例如

lat:[-74486951 TO -73486951]

这可能会对性能产生不利影响,因此请考虑使用较低的分辨率,或使用This question 中的一些技术,该技术讨论了在 Java Lucene 中索引经度和纬度数据(Zend Lucene 在版本中有点落后,所以尽量使用旧的东西)。

【讨论】:

    猜你喜欢
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2015-07-31
    • 2010-12-23
    • 2017-02-25
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多