2015-01-16 34 views
0

我正在使用Solr 4.10.2。我已经建立索引文件。在Schema.xml的,我已删除ID领域,取而代之的是与NGRAM领域并取得NGRAM字段作为唯一键用另一个替换ID会降低Solr的性能吗?

我有一个问题 - 当我会做搜索查询Solr。将搜索伤害性能?而且它也会影响D 主机缓存

回答

1

使用NGRAM字段作为唯一键是一个非常糟糕的主意。唯一的关键字段不能是“标记化”类型,否则多个单独的标记包含导致错误肯定匹配的关键字。您应该只使用字符串或int/long字段类型作为唯一键的类型。

当然,性能也有所影响,因为NGRAM领域创造了许多标记,而不是一个,但相比于其他问题,如误报那简直是微不足道的,重复的文档。

+0

我没有使用ngram字段。 ngram只是该字段的名称,其字段类型是字符串。您正在以错误的方式检查问题。所以,告诉我它会降低性能 – iNikkz

+0

不,使用任何其他字符串字段并不重要。无论uniqueKey字段被调用的性能如何。 – Shalin

+0

我非常抱歉'@ Shalin'。实际上,我的ngram字段不是字符串类型。我已经定义自己的字段类型= “textSpell”,其中包含2行''&'<过滤器类= “solr.ShingleFilterFactory” maxShingleSize = “3” minShingleSize = “2” outputUnigrams = “真”/>'。现在,Plz告诉我它是否会降低性能? – iNikkz

1

不,我不认为这会影响Solr的性能。由于您将自己的字段定义为uniqueKey,因此它将基于给定密钥对文档编制索引。我用我的项目中的一个我们使用documentId作为uniqueKey的同一批处理。

+0

好的。你确定。您索引了多少数据?多少时间,它需要检索你搜索的文件? – iNikkz

+0

我已经索引了6K文档,其中每个文档包含400个字段。检索查询通常取决于您的查询。如果您搜索所有索引数据,则需要几毫秒。 – ManojP

+0

我已经索引了1个Lakh文档,其中每个文档只有2个字段。当我第一次在索引数据中搜索单词时,大约需要2秒。下一次,当我搜索相同的查询时,由于该时间,文档保存在缓存中需要几毫秒。这就是为什么。 **你有没有使用任何技术来搜索查询?** – iNikkz