2013-04-15 46 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 –