Search 索尔。在schema.xml中修改某个字段的类型
假设我有一个包含多个字段的Solr文档。现在,由于某些特定的原因,我必须修改字段的一种类型。我知道,在修改该字段的类型后,我将无法查询该字段。我可以按其他字段查询吗 我的字段定义是Search 索尔。在schema.xml中修改某个字段的类型,search,solr4,solr-schema,Search,Solr4,Solr Schema,假设我有一个包含多个字段的Solr文档。现在,由于某些特定的原因,我必须修改字段的一种类型。我知道,在修改该字段的类型后,我将无法查询该字段。我可以按其他字段查询吗 我的字段定义是 <field name="searchtag" type="text_general" indexed="true" stored="true"/> 新定义是 <field name="searchtag" type="text_ngram" indexed="true" stored="true
<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>
谢谢,我找到了答案
我在Solr-4.2.1上尝试了一个小测试用例。正如我所说的,以前searchtag的类型是text_general。我举了一个新的例子。在这里,我将searchtag定义为一个文本类型字段。我还定义了一些其他字段。然后我将一些数据索引到这些字段以及searchtag中。因为这是一种简单而直接的方法,所以一切都很顺利。我使用searchtag和其他字段进行了查询,得到了正确的结果
然后我修改了schema.xml。我将searchtag的类型从text_general更改为text_ngram。修改模式后,我重新启动了Solr实例。现在,我实际上并不担心为searchtag编制索引的数据。因为我弄乱了那个字段的模式。因此,我对其他字段执行了相同的查询。我很高兴我得到了和以前一样的Solr文档。虽然我使用了模式,但是其他字段的其他索引是完整的。这就是我想要的
希望,如果你像我一样陷入这类问题,这个测试用例将在你的领域帮助你
注意:我已经提到了关于searchtag的模式定义和问题区域中的字段类型。你好,buddy86,请您更好地解释一下您在写作时的意思:我可以按其他字段查询吗?您可以在两个不同的字段中为数据编制索引,或者您可以使用一个字段编制索引,并设置一个不同类型的副本字段。其他字段表示除searchtag之外的字段出现在特定的Solr文档中。比如说,我在Solr文档中有10个不同的字段。其中之一是searchtag。所以,我说的是除了id和searchtag之外的其他8个字段。希望,现在清楚了。