pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

分面搜索 (solr) 與通過 PHP 進(jìn)行的舊過濾?

Faceted Search (solr) vs Good old filtering via PHP?(分面搜索 (solr) 與通過 PHP 進(jìn)行的舊過濾?)
本文介紹了分面搜索 (solr) 與通過 PHP 進(jìn)行的舊過濾?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我計(jì)劃在我的電子商務(wù)商店中設(shè)置過濾系統(tǒng)(優(yōu)化您的搜索).您可以在此處查看示例:http://www.bettymills.com/shop/product/find/Air+and+HVAC+Filters

I am planning on setting up a filter system (refine your search) in my ecommerce stores. You can see an example here: http://www.bettymills.com/shop/product/find/Air+and+HVAC+Filters

PrestaShop、OpenCart 和 Magento 等平臺(tái)具有所謂的分層導(dǎo)航.

Platforms such as PrestaShop, OpenCart and Magento have what's called a Layered Navigation.

我的問題是,與使用 Solr 或 Lucene 等平臺(tái)進(jìn)行分面導(dǎo)航相比,Magento 或 PrestaShop 等平臺(tái)中的分層導(dǎo)航有什么區(qū)別.

My question is what is the difference between the Layered Navigation in platforms such as Magento or PrestaShop in comparison to using something like Solr or Lucene for faceted navigation.

是否可以僅通過 php 和 mysql 實(shí)現(xiàn)類似的結(jié)果?

Can a similar result be accomplished via just php and mysql?

非常感謝詳細(xì)的解釋.

推薦答案

分層導(dǎo)航 == 分面搜索.

它們是同一個(gè)東西,但 Magento 和 al 使用不同的措辭,可能是為了吸引眼球.據(jù)我所知,Magento 支持 Solr 分面搜索或 MySQL 搜索.主要區(qū)別在于性能.

Layered Navigation == Faceted Search.

They are the same thing, but Magento and al uses different wording, probably to be catchy. As far as I know, Magento supports both the Solr faceted search or the MySQL one. The main difference is the performance.

在 MySQL 中進(jìn)行分面搜索需要您連接表,而 Solr 會(huì)自動(dòng)索引文檔分面以進(jìn)行過濾.您通常可以在普通硬件上使用 Solr(對(duì)于多方面搜索查詢 <100 毫秒)實(shí)現(xiàn)快速響應(yīng)時(shí)間.雖然 MySQL 進(jìn)行相同的搜索需要更長(zhǎng)的時(shí)間,但可以使用索引對(duì)其進(jìn)行優(yōu)化以實(shí)現(xiàn)類似的響應(yīng)時(shí)間.

To do faceted search in MySQL requires you to join tables, while Solr indexes the document facets automatically for filtering. You can generally achieve fast response times using Solr (<100ms for a multi-facet search query) on average hardware. While MySQL will take longer for the same search, it can be optimized with indexes to achieve similar response times.

Solr 的缺點(diǎn)是它需要您配置、保護(hù)并在您的服務(wù)器上運(yùn)行另一個(gè)服務(wù).根據(jù)您的配置(Tomcat、jetty 等),它也可能占用大量 CPU 和內(nèi)存.

The downside to Solr is that it requires you to configure, secure and run yet another service on your server. It can also be pretty CPU and memory intensive depending on your configuration (Tomcat, jetty, etc.).

您需要一個(gè)特定的數(shù)據(jù)庫(kù)架構(gòu),但它是可行的.這是一個(gè)簡(jiǎn)單的例子:

You need a specific database schema, but it's feasible. Here's a simple example:

產(chǎn)品

+----+------------+
| id | name       |
+----+------------+
|  1 | blue paint |
|  2 | red paint  |
+----+------------+

分類

+----+----------+
| id | name     |
+----+----------+
|  1 | color    |
|  2 | material |
|  3 | dept     |
+----+----------+

product_classification

+------------+-------------------+-------+
| product_id | classification_id | value |
+------------+-------------------+-------+
|          1 |                 1 | blue  |
|          1 |                 2 | latex |
|          1 |                 3 | paint |
|          1 |                 3 | home  |
|          2 |                 1 | red   |
|          2 |                 2 | latex |
|          2 |                 3 | paint |
|          2 |                 3 | home  |
+------------+-------------------+-------+

因此,假設(shè)有人搜索 paint,您會(huì)執(zhí)行以下操作:

So, say someones search for paint, you'd do something like:

SELECT p.* FROM product p WHERE name LIKE '%paint%';

這將返回 product 表中的兩個(gè)條目.

This would return both entries from the product table.

執(zhí)行搜索后,您可以使用如下查詢獲取結(jié)果的相關(guān)方面(過濾器):

Once your search has executed, you can fetch the associated facets (filters) of your result using a query like this one:

SELECT c.id, c.name, pc.value FROM product p
   LEFT JOIN product_classification pc ON pc.product_id = p.id
   LEFT JOIN classification c ON c.id = pc.classification_id
WHERE p.name LIKE '%paint%'
GROUP BY c.id, pc.value
ORDER BY c.id;

這會(huì)給你類似的東西:

+------+----------+-------+
| id   | name     | value |
+------+----------+-------+
|    1 | color    | blue  |
|    1 | color    | red   |
|    2 | material | latex |
|    3 | dept     | home  |
|    3 | dept     | paint |
+------+----------+-------+

因此,在您的結(jié)果集中,您知道有些產(chǎn)品的顏色為 bluered,它的唯一材料是 latex,并且它可以在部門 homepaint 中找到.

So, in your result set, you know that there are products whose color are blue and red, that the only material it's made from is latex, and that it can be found in departments home and paint.

一旦用戶選擇了一個(gè)方面,只需修改原始搜索查詢:

Once a user select a facet, just modify the original search query:

SELECT p.* FROM product p
   LEFT JOIN product_classification pc ON pc.product_id = p.id
WHERE 
   p.name LIKE '%paint%' AND (
      (pc.classification_id = 1 AND pc.value = 'blue') OR
      (pc.classification_id = 3 AND pc.value = 'home')
   )
GROUP BY p.id
HAVING COUNT(p.id) = 2;

所以,這里用戶搜索關(guān)鍵字paint,包括兩個(gè)方面:facet blue 表示顏色,home 表示部門.這會(huì)給你:

So, here the user is searching for keyword paint, and includes two facets: facet blue for color, and home for department. This'll give you:

+----+------------+
| id | name       |
+----+------------+
|  1 | blue paint |
+----+------------+

所以,總而言之.盡管它在 Solr 中是開箱即用的,但在 SQL 中可以相當(dāng)容易地實(shí)現(xiàn)它.

So, in conclusion. Although it's available out-of-the-box in Solr, it's possible to implement it in SQL fairly easily.

這篇關(guān)于分面搜索 (solr) 與通過 PHP 進(jìn)行的舊過濾?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Override Magento Config(覆蓋 Magento 配置)
What would cause a print_r and/or a var_dump to fail debugging a variable?(什么會(huì)導(dǎo)致 print_r 和/或 var_dump 調(diào)試變量失敗?)
How to update custom options programatically in magento?(如何在 magento 中以編程方式更新自定義選項(xiàng)?)
Magento 404 on Admin Page(管理頁面上的 Magento 404)
Magento - get price rules from order(Magento - 從訂單中獲取價(jià)格規(guī)則)
Magento Change Product Page Titles to Include Attributes(Magento 更改產(chǎn)品頁面標(biāo)題以包含屬性)
主站蜘蛛池模板: 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁| 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 硬齿面减速机[型号全],ZQ减速机-淄博久增机械| 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 铝合金风口-玻璃钢轴流风机-玻璃钢屋顶风机-德州东润空调设备有限公司 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 防火卷帘门价格-聊城一维工贸特级防火卷帘门厂家▲ | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 创客匠人-让IP变现不走弯路 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 |