sphinx + php 搜索提示功能,优化拼音加汉字搜索功能

VicMing 发布于 2017/03/11 14:43
阅读 764
收藏 2

sphinx 全文索引,是否可以单独做一个 查询预处理 类似淘宝搜索提示功能,或者solr 中suggestion类似的提示。

直接上图:

   

希望大家能提出讲解,小弟感激不尽。提供思路也行

加载中
0
VicMing
VicMing

有关 sphinx 共享的问题,可以在本帖发出来 大家纷纷来解决

0
VicMing
VicMing

自己问 自己回答吧。研究半天,做了一个简单的搜索提示。

利用coreseek SetGroupBy 进行一次筛选,

[6113] => Array
  (
  [weight] => 2576
  [attrs] => Array
  (
  [eid] => 6113
  [province_name] => 湖北省
  [province] => 15
  [city_name] => 武汉市
  [city] => 218
  [area_name] => 江汉区
  [group_name] => 轮胎压路机
  [g_pinyin] => luntaiyaluji
  [product_name] => 轮胎压路机
  [brand] => 三一
  [model] => S26P
  [monthly_rent] => 22000
  [company] => 26 操作重量(吨)
  [@groupby] => 8585862326883032923
  [@count] => 5   总数
  )
   
  )

简单的搜索 提示功能应该已经完成。 有更好的办法请大家多多发表

0
大賢者
大賢者

这个就跟文章站的文章标签一个意思。几个标签查询文章

VicMing
VicMing
是的 但是目前我只想到这个办法去做了。你有什么好的想法 来做这种联想搜索提示。
0
水果蟹
水果蟹

这个最简单的方式就可以实现了,为啥弄的这么复杂。我大概弄了个类似的可以参考http://139.196.37.62 

VicMing
VicMing
回复 @水果蟹 : 都忘了回来,我已经做好,很简单。看来唯一不足的是,已经没人维护了。。哈哈
VicMing
VicMing
回复 @爱吃柚子的螃蟹 : 筛选的值,储存在redis里面 筛选没弄过。redis 支持筛选吗?还是其他的什么。
VicMing
VicMing
回复 @爱吃柚子的螃蟹 : 很有帮助,但是我的水平可能不好理解 能否加一下的qq 或者微信 方便沟通一下,恩惠答谢 辛苦啦。 还有问题就是 搜索的时候你是如何做的联想 多字段拼接?还是指定的一个字段?
水果蟹
水果蟹
回复 @VicMing : 查询的时候做个分组就能实现你的要求吧,如果不想join表的话建议把待筛选的值存储在memcache啊或者redis里面就好了嘛
VicMing
VicMing
回复 @爱吃柚子的螃蟹 : 中英文这块 我已经做了 也是多个字段存储 创建索引的。这个我们是共同一样的,您知道 多属性用法吗 ,还有多表关联,我现在用的是join 感觉有点笨重不太好。还有如果搜索的时候,提示怎么能根据输入内容判断是什么类型的内容,如题:品牌 地区 产品名称 属性,分别做不同的提示 这样可以做到吗
下一页
0
推荐方案
推荐方案

实现一个智能提示功能需要ajax、数据库、jsp/php很多知识,
如果数据量大还需要特殊优化
一个小功能,花费太大精力不合适
我使用了92find com的搜索框智能提示功能,只要一行javascript
代码就可以实现baidu、淘宝搜索框提示的全部功能了
比如:拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇的排序权重
五分钟就可以在线配置拥有主流搜索引擎都有的提示功能

 

VicMing
VicMing
别闹了。你就是一个提示功能。我要的提示功能是在我数据库中能够联想到的数据,才会有相应的提示。你提示到了一些信息,但是我本地不一定有,这样根本不起作用,反而用户在我的项目中,搜索不到内容。不过还是很感谢
0
VicMing
VicMing

引用来自“VicMing”的评论

自己问 自己回答吧。研究半天,做了一个简单的搜索提示。

利用coreseek SetGroupBy 进行一次筛选,

[6113] => Array
  (
  [weight] => 2576
  [attrs] => Array
  (
  [eid] => 6113
  [province_name] => 湖北省
  [province] => 15
  [city_name] => 武汉市
  [city] => 218
  [area_name] => 江汉区
  [group_name] => 轮胎压路机
  [g_pinyin] => luntaiyaluji
  [product_name] => 轮胎压路机
  [brand] => 三一
  [model] => S26P
  [monthly_rent] => 22000
  [company] => 26 操作重量(吨)
  [@groupby] => 8585862326883032923
  [@count] => 5   总数
  )
   
  )

简单的搜索 提示功能应该已经完成。 有更好的办法请大家多多发表

每个字段进行扫描然后用group by 进行一个个分组,然后合并提示给用户。如果想要的可以私信我。但是我不建议使用coreseek + sphinx ,因为已经没有人在维护了。我推荐 mongodb + elasticsearch 全文索引做搜索。希望对还没有做搜索的朋友一些建议

0
黑胡椒大侠
黑胡椒大侠

可以定期把关键字读出来到一个txt上,用ajax把搜索字,发送到php上,在php上用字符串匹配算法获取到关键字相关的匹配列表,显示到搜索框下就ok了。

返回顶部
顶部