垂直搜索

2019-03-27 01:11|来源: 网路

1.<ramBufferSizeMB>32</ramBufferSizeMB>。solrconfig中的这个配置,如果对于过于大型的应用,这个配置必须修改。这是建索引时的设置内存大小。

2.一个商品属于,类别---》子类别--》子子类别  ,想在所有类别中都能查询到该商品。

    做法:讲该商品的父子结果查询出来。需要新加入一个索引字段,并构建成   类别id-子类别id-子子类别id :例如 1-11-111

    默认的我们只知道,商品的直接信息中只能拿到它的最末级类别id。可以通过最末级类别信息,查询到商品。

    我们必须自定义solr类型。就像定义中文的分词类型一样,在schama.xml中文分词定义为用ik分词器。这里我们用 <tokenizer class="solr.WhitespaceTokenizerFactory"/>作为分词器。

1-11-111 将被自动分解为 1 11 111 这3个串,如果想进行solr查询,只需将该字段名称=1 就能查询到该商品,或者11也可以查到该商品。

如果一个商品属于多个类别怎么办呢?一样的啊。将多个类别下的1-11-111串合并在一起。

3。对于一个比较大型的应用,而且数据量很大的时候,建索引就不能一次建完了。得一部分一部分的查出来一部分一部分的建索引。比如1000w条数据。或者更大,我们可分为1w条这样查,查询完就建索引,这样循环1000次。

4。或者根据数据中最近更新的数据,查询的时候就只对有过更新的数据进行更新。

5.索引库的更新。索引库更新不能全用全量式更新,也不能全用增量式更新。

     5.1.只用全量式更新的弊端:在主索引服务器向从索引服务器分发的过程中,如果主索引服务器还未建索引,而从索引服务器又在向主索引服务器拿索引,那么就会出现大问题。就会导致系统,在几十分钟不能用。几率虽然很小但也有可能发生。是个不定时炸弹。

    5.2.只用增量更新,只用增量更新会出什么问题呢,如果数据库中删除了的数据,在索引库中还是会存在,而且有可能被用户查询出来。

    5.3.解决的方案是:增量更新和全量更新都用。增量更新保证每次更新数据都能加入索引库,在较短的时间段内执行,全量更新则用于将整个索引库删除再进行 建索引,全量更新必须在晚上某个时间段执行。如果不幸在晚上执行全量的时候出现那个很小的几率的问题,增量更新还会在这个较小的时间段内将索引建进去。并 分发到从索引服务器


转自:http://www.cnblogs.com/Dream-Weaver/archive/2013/04/23/3038061

相关问答

更多
  • 要避免SELECT返回的结果中出现重复行,请使用DISTINCT: SELECT DISTINCT recID FROM items WHERE "Value" LIKE 'J%' 但是,这仅适用于实际返回的值,并且仅适用于整个结果行。 在一般情况下,要为每组表记录返回一个结果记录,请使用GROUP BY创建此类组。 对于未出现在GROUP BY子句中的任何列,您必须选择要返回的组中的哪个rowID ; 这里我们使用MIN: SELECT MIN(rowID) FROM items WHERE "Valu ...
  • 试试这个 .top-header { background-color: #D9D9D9; } .media-body{ vertical-align: middle !important; }