哪个分析器用于Solr查询



我在模式中添加了一个使用EdgeNgramFilter作为分析器的字段类型。

{
"add-field-type" : {
"name":"text_edge_ngram",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer" : {
"tokenizer":{
"class":"solr.WhitespaceTokenizerFactory" },
"filters":[
{"class":"solr.LowerCaseFilterFactory"},
{ "class":"solr.EdgeNGramFilterFactory",
"minGramSize":"1",
"maxGramSize":"4"}
]
}
}
}

此外,我已将此类型分配给一个字段:

{
"replace-field" : {
"name":"MyField",
"type":"text_edge_ngram",
"uninvertible":true,
"indexed":true,
"stored":true
}
}

我已经重新索引了我的文档,但现在下面的查询没有返回预期的结果。下面是一个例子:

.../select?q=aweso没有结果

但是,如果我查询单一字段

.../select?q=MyField:aweso,我得到了"真棒"的结果。

如果有人能解释发生了什么,或者给我如何排除故障的提示,那就太好了。

您需要在/query请求处理程序下的solrconfig.xml文件中设置默认搜索字段或设置为IntParams默认参数值在solrconfig.xml中指定,或由请求中的查询时间值覆盖。

<requestHandler name="/select" class="solr.SearchHandler"> 
<lst name="defaults">
<str name="df">MyField</str>
</lst>
</requestHandler>

我不喜欢使用ConfigAPI来更新solr cofing设置,并将默认配置直接保存在solrconfig.xml文件中。

以下配置适用于您定义的几个请求处理程序:

<initParams path="/select,/get,standard">
<lst name="defaults">
<str name="df">term1 term2</str>
<str name="q.op">AND</str>
</lst>
</initParams>

这个示例SearchHandler声明展示了声明了许多默认值的SearchHandler。请注意,同一请求处理程序的多个实例(SearchHandler(可以多次注册到不同的名称(和不同的初始化参数(

最新更新