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)題以包含屬性)
主站蜘蛛池模板: 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 北京中创汇安科贸有限公司| 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 乙炔气体报警装置|固定式氯化氢检测仪|河南驰诚电气百科 | 影合社-影视人的内容合作平台 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 精密模具加工制造 - 富东懿| 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 火锅底料批发-串串香技术培训[川禾川调官网] |