SolrQuery不会返回少于3个字符的结果

时间:2012-08-23 09:45:53

标签: java solr solr-query-syntax

我的代码如下:

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的

1 个答案:

答案 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以使其可搜索。