假设我有几个字段的Solr文档。现在,由于某些特定原因,我必须修改其中一个字段的类型。我知道,在修改该字段的“类型”后,我将无法使用该字段进行查询。我可以通过其他字段查询吗?
我的字段定义是
<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>
由于
答案 0 :(得分:0)
我找到了答案。
我在Solr-4.2.1上的数据上尝试了一个小测试用例。正如我所说,以前“搜索标签”的类型是 text_general 。我拿了一个新的Solr实例。在那里,我将searchtag定义为text_general类型字段。我还定义了其他一些领域。然后我将一些数据索引到这些字段以及 searchtag 中。因为这是一种简单而直接的方式,所以一切都很好。我用searchtag和其他字段查询并得到了正确的结果。
然后我修改了schema.xml。我将搜索标签的类型从text_general更改为 text_ngram 。修改架构后,我重新启动了Solr实例。现在,我实际上并没有打扰为searchtag索引的数据。因为我弄乱了那个领域的架构。所以,我在其他字段上执行了相同的查询。我很高兴我得到了和以前一样的Solr文件。虽然我使用了模式,但其他字段的其他索引完好无损。这就是我想要的。
希望,如果你遇到像我这样的问题,这个测试用例会对你所在的地区有所帮助。
注意:我已经提到了关于“searchtag”的架构定义以及问题区域中的字段类型。