问题:某一条数据包含2个字段,比如就是title
和alias
这2个字段。其中title通常比较短,就是一个词。alias会比较长。搜索abc
的时候,即使出现的词很明显是包含在alias
中的词abc
,但是排名仍然比title的部分包含ab
的分数低。
之前的情况是各个字段都有权重,第一个想法就是降低权重,然后搜索试试,发现情况虽然好一些,但是效果还是不好。
考虑到alias中包含的词其实是非常多的,title是比较短的,那么从匹配度来说,title因为短,所以其匹配度高。alias的长度长,所以其匹配度低。那么适当增加alias
的权重,发现效果好了很多。
在利用ik
分词器的时候,对于维生素A
分词总是会被忽略A
。此时可以在ik
的目录下的stopword.dic
中去掉a
,然后重启es即可。
在ik分词器的目录中有几个特殊的文件:
supername.dic
里面包含的是复姓stopword.dic
里面包含的就是停顿词。比如维生素A
,因为A
包含在其中,所以分词后没有Amain.dic
和extra_main.dic
都是官方定义的关键词*.dic
都是官方定义的词组如果你测试发现分词效果都不好,那么修改配置文件IKAnalyzer.cfg.xml
,加入自己的分词。
GET /_analyze
{
"text": "新民主主义",
"analyzer": "ik_smart"
}
# 如果是某个已经建立的索引
GET /mine-indxe/_analyze
{
"text": "维生素A",
"analyzer": "ik_smart"
}
GET /mine-indxe/_analyze
{
"text": "维生素A",
"analyzer": "my_analyzer"
}