0

我正在做一个网站 allevents.in(基本上它是一个事件发现和事件推广平台),在这个网站上我想应用 solr 搜索。

我使用 Solarium 作为 php 客户端。现在,当您访问我正在快速搜索的网站时(标题上的绿色按钮)。

所以现在我想搜索“纽约音乐会”之类的活动,然后它会给我纽约的活动(这很有效)。

但是当有人只搜索“音乐会”时,我想得到结果,那么它应该给我当前位置的结果或最近位置的结果。

那么我怎样才能找到当前位置。这样当我只搜索“音乐事件”时,它会给我提供更接近我当前位置或城市的结果。

我正在使用 geofilt() 和 geodist()。

4

1 回答 1

0

正如我所见,您已经熟悉 solr 提供的地理位置过滤器。

那么你的问题是什么?您在索引数据时是否已经提供了地理位置?

如果不是,您应该考虑使用 API 为您提供给定地址的地理位置,以便您可以将其与其他数据一起索引。 看这里

然后在搜索时获取当前访问您网站的人的位置,请查看:HTML5 Location。作为故障转移,您可以使用以下 IP 解析 API 来获取人员的大致位置:IP Resolver(如果您稍微搜索一下网络,您还可以使用其他 API)

我希望这回答了你的问题。

编辑:在你上一篇文章之后。

正如我之前所说,您使用 HTML5 位置获取位置。

首先,您可以在 html 表单中添加两个隐藏字段(我使用 jquery 语法):

//The form you use for the submission of your search query 
<form action="search.php" method="post">

//Here are your form elements below are the hidden fields. 

<input type="hidden" name="long" value=""/>
<input type="hidden" name="lat" value=""/>

</form> 

<script type="text/javascript">

//Getting the location once the page finished loading
$( document ).ready(
function()
{
  if (navigator.geolocation)
  {
     navigator.geolocation.getCurrentPosition(showPosition);
  }
});

//Location callback. We set the long and lat values of the hidden fields. 
function showPosition(position)
{
    $('[name="lat"]').val(position.coords.latitude);
    $('[name="long"]').val(position.coords.longitude);  
}

</script>

现在表单已提交,我们需要访问我们在隐藏字段中设置的值。

//The form was submitted so in your form submission handling code:
$long = $_POST["long"];
$lat= $_POST["lat"];

//Now you have your variables. You can now put them inside your query
//DO your query

希望这可以帮助。

于 2014-01-31T08:43:39.993 回答