2011-12-15 45 views
1

我一直在使用Solr一會兒,只是告訴我,我有反向通配符過濾器聲明,但沒有任何字段被聲明/關聯到類型'textReverse'&沒有複製字段來複制值轉換成任一值。然而用領先的通配符搜索工作!Solr反向通配符和字段協會

爲了實現領先的通配符搜索,將字段類型設置爲'textReverse'是不是很規範?

剛纔有此聲明的作品,

<fieldType name="textReverse" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

,而無需實際聲明類型的字段,例如,

​​

,但我有「fooColumn」類型「文本'(沒有反向通配符過濾器的字段類型..)

理解有沒有差距?

回答

2

ReversedWildcardFilterFactory使更快領先的通配符查詢 - 即使沒有此過濾器,這樣的查詢也能正常工作。您可以通過從您的配置中刪除字段類型聲明,然後用引導通配符引發一些查詢來確認這一點。

查看solr.ReversedWildcardFilterFactory here的描述。如果您開始使用此過濾器,那麼使用前導通配符進行查詢的性能應該會提高很多。

+0

thx回覆,我試着刪除fieldType。領先的WildCard搜索完全失敗,** HTTP狀態400 - org.apache.lucene.queryParser.ParseException:無法解析'* duluth *':'*'或'?'不允許作爲WildcardQuery **中的第一個字符。它回到我的原始問題如何通過只有字段類型聲明而不具有該類型的字段,爲那些不是那種類型的字段啓用通配符搜索? – mailboat 2011-12-15 16:14:57