假設我有幾個字段的Solr文檔。現在,由於某些特定的原因,我必須修改某個字段的類型。我知道,在修改該字段的「類型」後,我將無法使用該字段進行查詢。我可以通過其他字段查詢嗎?Solr。在schema.xml中修改其中一個字段的類型
我的字段定義爲
<field name="searchtag" type="text_general" indexed="true" stored="true"/>
新定義是
<field name="searchtag" type="text_ngram" indexed="true" stored="true" multivalued="true"/>
字段類型定義
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
感謝
嗨buddy86,請你能更好的解釋一下你寫的是什麼意思:「我能查詢其他字段嗎?」 ?您可以在兩個不同的字段中索引數據o也許您可以使用字段進行索引並設置不同類型的副本字段。 – Dany
「其他字段」表示除特定Solr文檔中出現的** searchtag **以外的字段。假設我在Solr文檔中有10個不同的字段。其中之一是「searchtag」。所以,我在談論除id和searchtag之外的其他8個字段。希望,現在很明顯。 – buddy86