我的代码如下:
SolrQuery query = new SolrQuery();
query.setQuery(q.trim());
try {
QueryResponse res = getSolrServer().query(query);
return res.getResults();
} catch (SolrServerException sse) {
log.error(sse);
}
问题是,当我有超过3个字符的查询时,这会返回响应,例如查询字符串“che”将响应结果,但查询字符串“ch”将返回我没有响应。 有没有办法可以覆盖Solr Query的3个字符最小长度。
是导致问题的下面的xml,如果是,我可以使用java
以编程方式覆盖它<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="50" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
在Advance中感谢帮助。
谢谢和问候,
Vaibhav的
答案 0 :(得分:3)
NGramTokenizerFactory: -
默认行为。请注意,此标记生成器在整个字段上运行。它不会破坏空白区域。因此,空格字符包含在编码中。
<analyzer>
<tokenizer class="solr.NGramTokenizerFactory"/>
</analyzer>
在:“嘿男人”
Out:“h”,“e”,“y”,“”,“m”,“a”,“n”,“he”,“ey”,“y”,“m”,“ma” “,”一个“
所以使用你的配置: - minGramSize =“3”maxGramSize =“50”小于3的项目将被过滤
对于两个字母单词,由于您没有索引中的术语,因此这些术语永远不可搜索。您需要将minGramSize更改为2以使其可搜索。