solr - 哪个分析器用于 Solr-Query
问题描述
我在我的模式中添加了一个使用 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
,结果我得到'真棒'。
如果有人能解释发生了什么或给我提示如何排除故障,那就太好了。
解决方案
您需要在请求处理程序solrconfig.xml
下的文件中设置默认搜索字段,或者
在 中指定默认参数值,或者由请求中的查询时间值覆盖。/query
IntParams
solrconfig.xml
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="df">MyField</str>
</lst>
</requestHandler>
我不喜欢使用 ConfigAPI 来更新 solr cofig 设置并将默认配置直接保存在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)的多个实例可以使用不同的名称(和不同的 init 参数)多次注册
推荐阅读
- django - Django订购多对多关系
- javascript - 如何在数据表中添加行 - DC.js
- ios - 如何从另一个帐户向应用商店提交申请?
- python - Python:seaborn箱线图中的连接方式
- wxpython - 可以为 wxPython 中使用 AppendCheckItem 创建的 MenuItem 设置初始检查状态吗?
- ios - 使用 getThumbnailBatch 获取 Dropbox 缩略图
- assembly - NASM 中的等效 MASM .const 部分
- bash - Bash 中的 If True 语句
- node.js - 如何在 NodeJS 中测试服务器发送事件 (SSE) 路由?
- xml - Visual Basic XMLTextWriter -> WriteRaw 后没有换行符