Solr正在从搜索查询中删除字母'e'...
对于Solr来说,我很新,所以我真的不知道从哪里开始想要解决这个问题,但每当我发送搜索查询时,Solr都会删除'e'字符...
正如您在尝试搜索术语ace001
{
"responseHeader": {
"status": 0,
"QTime": 1,
"params": {
"q": "_text:ace001",
"indent": "true",
"wt": "json",
"debugQuery": "true",
"_": "1478467316690"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"debug": {
"rawquerystring": "_text:ace001",
"querystring": "_text:ace001",
"parsedquery": "PhraseQuery(_text:\"ac 001 ac 001\")",
"parsedquery_toString": "_text:\"ac 001 ac 001\"",
"explain": {},
"QParser": "LuceneQParser",
"timing": {
"time": 1,
"prepare": {
"time": 1,
"query": {
"time": 1
},
"facet": {
"time": 0
},
"mlt": {
"time": 0
},
"highlight": {
"time": 0
},
"stats": {
"time": 0
},
"spellcheck": {
"time": 0
},
"debug": {
"time": 0
}
},
"process": {
"time": 0,
"query": {
"time": 0
},
"facet": {
"time": 0
},
"mlt": {
"time": 0
},
"highlight": {
"time": 0
},
"stats": {
"time": 0
},
"spellcheck": {
"time": 0
},
"debug": {
"time": 0
}
}
}
}
}
搜索“acb001”之类的其他术语并不会删除“b”,但我注意到它确实将数字与字母分开。我希望Solr在文本字段中匹配术语'acb001'......
提取物:
"rawquerystring": "_text:acb001",
"querystring": "_text:acb001",
"parsedquery": "PhraseQuery(_text:\"acb 001 acb 001\")",
"parsedquery_toString": "_text:\"acb 001 acb 001\"",
"explain": {},
"QParser": "LuceneQParser",
我真的很欣赏这方面的一些方向,以便我可以进一步调试或理想地解决这个问题,以便ace001返回所有出现的情况。
编辑:
架构是标准/默认http://pastebin.com/59LbmJUp
答案 0 :(得分:4)
这是因为solr.PorterStemFilterFactory而发生的。您的默认搜索字段ID是具有
的htmltext
B
在查询分析中。
PorterStemmer源于" ace"到" ac"。 你可以在这里查看https://tartarus.org/martin/PorterStemmer/voc.txt 搜索单词" ace"。 现在看看这里有什么相应的输出,在词干之后堵塞https://tartarus.org/martin/PorterStemmer/output.txt相应的词,这将是" ac"
解决此问题,查询过程中的过滤器以及solrconfig.xml中的索引
此外,您正在使用 WordDelimiterFilterFactory ,它将在字母数字bounderies上分割单词。这就是为什么你看到" ac"和" 001",如果你不想那样,那么在schema.xml
中也删除那个过滤器您使用的是默认的schema.xml,其中包含许多您可能不需要的不必要的过滤器。我建议将其拆分为几个过滤器。然后根据需要添加过滤器而不是其他方式。