【发布时间】:2021-04-23 13:32:23
【问题描述】:
我有这样的组件:
public class TempComponent extends SearchComponent {
private static final Logger LOG = LoggerFactory.getLogger(SearchComponent.class);
@Override
public void prepare(ResponseBuilder rb) throws IOException {
LOG.info("Temp Component ---");
SolrIndexSearcher indexSearcher = rb.req.getSearcher();
IndexReader reader = indexSearcher.getIndexReader();
SolrParams params = rb.req.getParams();
String q = params.get(CommonParams.Q);
Query query = new TermQuery(new Term("name", q));
DocList matchDocs = indexSearcher.getDocList(query, null, null, 0, 100000,10000);
}
@Override
public void process(ResponseBuilder rb) throws IOException {
}
@Override
public String getDescription() {
return null;
}
}
在架构中,我为字段 name 设计了新的 fieldType。
<fieldType name="nameType" class="solr.TextField" positionIncrementGap="100" multiValued="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="name" type="nameType" multiValued="false" indexed="true"/>
在搜索索引之前,如何访问该 fieldType 的分析器并将其应用于 query(q)?
【问题讨论】: