标签: entity-attribute-value

如何以及在何处修改Magento搜索查询?

首先,我在SO中发现了类似的问题,但没有任何答案.所以,问题的第一部分有点重复.我想改进Magento的搜索结果.这是我已经做过的事情:

1.搜索AND而不是OR当有多个单词时.

2. Ajax搜索从任何地方开始搜索,而不仅仅是从字段的开头搜索.

3.修剪s单词中的最后一个以防止在使用复数形式搜索时出现空结果.

4.我将搜索类型更改LikeFulltext或者Combine但结果不是更好,甚至是最差的,所以我保持原样.它Like现在,所以没有relevance订购.

我想要尝试的最后一件事是将其添加到搜索查询中:

SELECT ... other non-full-text-cols
MATCH (product_title) AGAINST ('lean body for her') AS rel1,
MATCH (content) AGAINST ('lean body for her') AS rel2
FROM table
WHERE MATCH (product_title,content) AGAINST ('lean body for her')
ORDER BY (rel1*1.5)+(rel2)
Run Code Online (Sandbox Code Playgroud)

这是我的查询,但我不确定它是否可行,因为我无法测试它:

$this->_productCollection->addAttributeToSelect(
    array(
    'rel1' => new Zend_Db_Expr('MATCH (name) AGAINST ("'.$queryText.'")'),
    'rel2' => new Zend_Db_Expr('MATCH (short_description) AGAINST ("'.$queryText.'")') …
Run Code Online (Sandbox Code Playgroud)

collections magento e-commerce entity-attribute-value magento-1.6

13
推荐指数
1
解决办法
1万
查看次数

如何在.NET中以ORM友好的方式存储可扩展元数据?

我似乎无法找到"如何使用ORM工具的EAV方法"问题的答案,所以我会在这里试试运气.

假设我有一张Entities表:

ID -> int
Name -> nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

一个Images表:

EntityID -> int
Width -> int
Height -> int
Run Code Online (Sandbox Code Playgroud)

一张Songs桌子:

EntityID -> int
Duration -> decimal(12,3)
Run Code Online (Sandbox Code Playgroud)

我需要向实体添加可扩展的元数据(具有类型信息的未知键值对),以便我能够发出如下查询:

找到所有Duration超过3分钟的歌曲,Name以"The"开头,元数据符合以下条件:

  • HasGuitarSolo 设置为true
  • GuitarSoloDuration 大于30秒

并按GuitarSoloDuration降序对结果进行排序.

我不想创建HasGuitarSolo,GuitarSoloDuration数据库等栏目,我非常希望将它们存储在一个EAV样的模式,或者说不需要钥匙了前面的知识的替代模式.

.net sql orm entity-attribute-value

12
推荐指数
1
解决办法
762
查看次数

数据库表中的键/值对

我需要在我的数据库中设计一个Key/value表,我正在寻找最佳方法的指导.基本上,我需要能够将值与一组动态命名属性相关联,并将它们应用于外部键.

我需要支持的操作是:

  • 将键/值对应用于一组项目
  • 枚举所有当前活动的密钥
  • 确定具有给定键值的所有项目
  • 确定与给定键关联的值与某些条件匹配的所有项.

似乎最简单的方法是定义一个表:

CREATE TABLE KeyValue (
  id    int,
  Key   varchar...,
  Value varchar...
);
Run Code Online (Sandbox Code Playgroud)

似乎我可能会在Key列中复制大量数据,因为我可能会为大量文档定义任何给定的键.用一个整数查找替换Key varchar到另一个表似乎缓解了这个问题(并且使枚举所有活动密钥的效率明显提高),但是我仍然坚持维护查找表的问题(随时随地插入它)定义属性,并在键/值被清除时可能删除条目.

最好的方法是什么?

sql t-sql sql-server entity-attribute-value

11
推荐指数
3
解决办法
3万
查看次数

Magento ORM文档

在源代码之外,有没有关于Magento ORM的大量文档?我得到了基础知识,并且通常可以通过Mage代码库挖掘,使用Mage :: Log调用它并找出可行的东西,但如果我对模型的预期有一个高级概述,我的效率会提高要使用的.聚合方法如何工作,加入的最佳方式是什么,何时扩展模型,何时是使用eav模型与非eav模型的最佳时间等.

Django模型文档,但对于Magento.

php django orm magento entity-attribute-value

11
推荐指数
1
解决办法
4288
查看次数

如何在列上存储元数据

假设您正在收集有关即将发布的超级英雄电影的内幕信息,您的主电影表看起来像这样:

表格1

Title              Director   Leading Male      Leading Female    Villain
--------------------------------------------------------------------------
Green Lantern      Kubrick    Robert Redford     Miley Cyrus     Hugh Grant  
The Tick          Mel Gibson  Kevin Sorbo        Linda Hunt    Anthony Hopkins
Run Code Online (Sandbox Code Playgroud)

这通常可以很好地工作,并允许非常简单的查询以及行之间的比较.

但是,您希望跟踪每个数据事实的来源,以及发现该事实的记者的姓名.这似乎暗示了某种类似这样的EAV表:

表2

Movie             Attribute            Value          Source          Journalist
----------------------------------------------------------------------------------
Green Lantern      Director           Kubrick         CHUD              Sarah
Green Lantern    Leading Male      Robert Redford     CHUD              James
Green Lantern   Leading Female      Miley Cyrus    Dark Horizons        James
Green Lantern      Villain           Hugh Grant       CHUD              Sarah
The Tick           Director          Mel Gibson       Yahoo            Cameron
...
Run Code Online (Sandbox Code Playgroud)

虽然它可以轻松捕获我们想要的元数据,但却更难以进行查询.简单地获取单个电影的所有基本数据需要更多.更具体地说,你必须在这里处理四行以获得绿灯侠上的四个重要信息,而在表1中它是一个单独的,封装良好的行.

所以我的问题是,鉴于我刚才描述的复杂情况,并且因为我知道EAV表一般要避免,EAV仍然是最好的解决方案吗?它似乎是表示此数据的唯一合理方式.我看到的唯一另一种选择是将表1与另一个 …

database-design normalization entity-attribute-value

11
推荐指数
1
解决办法
6572
查看次数

桌子太多了; MySQL在连接中只能使用61个表

从MySQL中的多个表导出数据的最佳方法是什么?我基本上都在处理产品细节.假设产品有150个数据属性.如何将其导出到一行,然后将其导出为CSV或tabdelimited格式的平面文件.

获取错误表太多; MySQL在连接中只能使用61个表

/**** Get Resultset *****/
$rs = mysql_query($sql);
/**** End of Get Resultset *****/

$objProfileHistory->addHistory($this->profile_id, "Loaded ". mysql_num_rows($rs)." records");


$this->runQuery($sql);

$this->exportToCSV();

/**
  * getAttributeDetails
  */
function getAttributeDetails(){
    global $dbObj, $profile;

    $base_table = "catalog_product_entity";
    $select  = array();
    $tables  = array();
    $i   = 0;

    $profile->showLog("Start fields mapping", "success");

   if( is_array($this->attributes_in_db) && sizeof($this->attributes_in_db) > 0 ){
    $arr = implode("','", $this->attributes_in_db);
    $sql = "select attribute_id, attribute_code, backend_type, frontend_input
        from eav_attribute 
        where attribute_code in ('".$arr."') 
        and entity_type_id = 
         (select entity_type_id 
          from eav_entity_type 
          where …
Run Code Online (Sandbox Code Playgroud)

mysql join entity-attribute-value

11
推荐指数
1
解决办法
2万
查看次数

如何为多租户应用程序实现用户定义的字段和分组:EAV,固定表格模式,NoSQL

我在SaaS工作,任何租户都可以拥有多个联系人列表,每个列表可以有任意数量的自定义字段,此列表的联系人可以存储,列表中的任何数量的组可以包含(使用组)用于分割列表的联系人).每个联系人都有一个必填字段:email_address和为我所提到的列表定义的任意数量的用户定义字段.我们必须能够根据它们所在的组以及用户定义值的值来查找列表的联系人.我们必须提供最多30个用户定义的字段.我现在看到解决这个问题的三种方法:

  1. 使用一种EAV(我们尝试这样做),但它看起来相当复杂.我们有一个表列表(租户列表),相关表custom_fields,存储列表订阅者的email_addreses的相关表订阅者,与订阅者和custom_fields表相关的表subscriber_custom_data(订阅者的自定义字段的存储值) .

  2. 字段表模式.它的描述在http://blog.springsource.com/arjen/archives/2008/01/24/storing-custom-fields-in-the-database/.在这种情况下,我们将使用与自定义字段相关的字段,该字段将在列中存储所有自定义字段,例如,具有30列以存储每个可能的自定义字段的值,以及存储列的名称和用户名称的映射的表领域.它看起来也很复杂.我们必须至少有30个索引才能按自定义字段的值进行搜索,还有其他问题,

  3. 使用某种NoSQL数据库至少用于存储用户定义的字段以及列表的组.您是否认为此类数据库可以在此处提供帮助,如果可以,则如何设计用于存储自定义字段和组.我试着看看不同类型的NoSQL,例如面向文档的MongoDb,但是我立刻看不出它如何帮助解决这个问题.我们可以在这里存储任意属性,但是为了搜索我们需要提前索引它们的自定义字段的值,所以我们必须知道我们将拥有哪些自定义字段.

感谢您提供有关它的任何信息.

field defined nosql entity-attribute-value

11
推荐指数
1
解决办法
2182
查看次数

在实体上存储更改:MySQL是否是正确的解决方案?

我想存储我在"实体"表上所做的更改.这应该像一个日志.目前它在MySQL中使用此表实现:

CREATE TABLE `entitychange` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `entity_id` int(10) unsigned NOT NULL,
  `entitytype` enum('STRING_1','STRING_2','SOMEBOOL','SOMEDOUBLE','SOMETIMESTAMP') NOT NULL DEFAULT 'STRING_1',
  `when` TIMESTAMP NOT NULL,
  `value` TEXT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
  • entity_id=我entity桌子的主键.
  • entitytype= entity表中更改的字段.有时只改变一个字段,有时多个.一个变化=一排.
  • value =字段"新值"的字符串表示形式.

将Field entity.somedouble从3 更改为2 时的示例,我运行这些查询:

UPDATE entity SET somedouble = 2 WHERE entity_id = 123;
INSERT INTO entitychange (entity_id,entitytype,value) VALUES (123,'SOMEDOUBLE',2);
Run Code Online (Sandbox Code Playgroud)

我需要select更改过去15天的特定实体和实体类型.例如:最后15天内最后一次更改SOMEDOUBLE为entity_id 123.

现在,有两件事我不喜欢:

  1. 所有数据都存储为TEXT- 虽然大多数(小于1%)不是真正的文本,但就我而言,大多数值都是DOUBLE.这是一个大问题吗? …

mysql database-design temporal-database database-partitioning entity-attribute-value

11
推荐指数
2
解决办法
2926
查看次数

如果EAV是邪恶的,那么动态值的用途是什么?

我需要创建数据库,其中Accountgrouptable将具有动态字段,以便Accounts在需要时输入这些动态字段值.这可能并不重要,但我正在使用C#与EF和Linq.

这对我来说很难,因为我从来没有做过这样的事情,因为我做了我的研究,每个人都说EAV系统太可怕了,你应该设计得不同,问题是之后没有人告诉 - 怎么样?

所以也许你可以帮助我,告诉我如何在不做EAV的情况下实现类似的东西?

这就是我到目前为止所拥有的.

在此输入图像描述

c# database database-design entity-framework entity-attribute-value

11
推荐指数
1
解决办法
3646
查看次数

SQL Server上大型EAV /开放架构系统的性能

有人在SQL Server中实现了一个非常大的EAV或开放架构样式数据库吗?我想知道这是否存在性能问题以及您如何克服这些障碍.

database sql-server entity-attribute-value

10
推荐指数
2
解决办法
3985
查看次数