2013-04-15 31 views
0

Solr中我有以下字段对文本字段(每个> 1KB)进行精确短语搜索的正则表达式:任何改善solr正则表达式搜索性能的建议?

<fieldType name="text_keyword_lowercase" class="solr.TextField" positionIncrementGap="100"> 
<analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
</analyzer> 
</fieldType> 
  • 正则表达式搜索文本的开头是超级快 预期( /sear.* ph.ase.*/);
  • 其他人,中间和结尾(/.*sear.* ph.ase.*//.*sear.* ph.ase/)是 慢(在Solr的20万个文件内搜索把我的工作站上以防万一 900毫秒);

要求是能够在几秒钟内搜索几亿个文档。 关于提高后两者性能的任何建议? 或者,也许对不同的方法/工具的建议?

+0

你的正则表达式中'。*'的用途是什么? – MikeM

+0

@MikeM对不起,这篇文章有一个格式错误。 '。*'表示可以有零个或多个字符。 – Rahim

+0

是的,我只是想知道,如果你正在执行“精确的短语正则表达式搜索”他们提供了什么目的。 – MikeM

回答

0

你可能想看看solr.EdgeNGramFilterFactory。您的索引将会增长,但速度会提高。

+0

我试过了,没有帮助。谢谢! – Rahim

+0

它应该比通配符查询快得多。否则,你可以加速wilcards开始http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ReversedWildcardFilterFactory –