2015-04-30 50 views
0

我想搜索文本中的文本,因爲foo要找到barfoobar或foobar或barfoo與solr。在開始和結束時用通配符搜索solr的最佳做法

我的字段類型的配置是:

<fieldtype name="searchableContentTokenized" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="char-mapping.txt" /> 
     <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\&quot;]+" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
    <analyzer type="query"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="char-mapping.txt" /> 
     <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\&quot;]+" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldtype> 

使用時查詢(Q =內容:*富*)搜索花費的時間太長,因爲我的索引中有500,000個文檔,佔地30 GB。

有更好的方法來做搜索嗎?

謝謝,提前。

+0

嘗試對我的Solr集合處理超過2頁百萬的文件我用字段類型'text_ar'之一 - 它是阿拉伯語的內容 - 在這個例子中的架構,你應該找到這樣字段類型爲英語,如果需要取消註釋並將字段更改爲英語或內容語言.. – SaidbakR

回答

1

與下面的字段類型

<fieldType name="text_reference" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100"> 
<analyzer type="index"> 
<tokenizer class="solr.KeywordTokenizerFactory"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="front"/> 
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="back"/> 
</analyzer> 
<analyzer type="query"> 
<tokenizer class="solr.KeywordTokenizerFactory"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 
相關問題