我在文档字段中使用fieldtype作为text_ws来强调分隔和驼峰大小写值(eq“SimplyShopping_Rediff”)。
<fieldType name="text_ws" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern=";" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern=";" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
有没有办法可以在不重新索引的情况下更改查询分析器,以便我可以搜索Shopping或Rediff。
答案 0 :(得分:0)
不,在你的情况下没有。
您定义的fieldType使用模式;
来标记您的文本。标记文本意味着将单词流分割为索引标记(也称为术语或单词)。
坚持您的示例SimplyShopping_Rediff
,其中没有;
,因此整个文本被识别为一个令牌,并且将被视为您的索引中的该令牌。您可以使用大写,小写,词干或过滤它,但不能再拆分它。
即使您要更改fieldType,也要在查询时将其标记为您想要的方式。索引中的标记仍然存在缺陷,因为它们在索引时已经被错误地标记。因此,您的搜索的新的正确标记化术语将在索引中不会出现任何内容。索引中没有命中,没有搜索结果。
在solr参考指南中a good section about Analyzers, Tokenizers and Filters。由于重建整个索引可能非常昂贵,我建议先阅读此内容。