站内搜索
站内搜索
概述
搜索引擎的主要组成部分:文档获取、文档存储(索引、压缩)、文档查询(拼写建议、排序算法、评估。
- 文档获取最重要的是去重。
- 索引系统使用倒排,涉及到不同语言的分词。
使用elastic search 实现公司内部资源的全文检索
需求:
常见的需求,通过关键词搜索需要的文章
在简单搜索的基础上提供类型,来源的过滤
-
类型type - 对每条信息的分类
-
标题title - 搜索时的显示
-
摘要summary - 搜索时的摘要
-
内容content - 不显示但作为优先级不高的搜索条件
-
时间datetime - 记录信息收录时间
-
链接url - 方便查看详细
-
数据源source - 方便查看详细
后续还可以增加优先级比较高的字段精准查询
接口
查询
地址:GET /search/?q=keywords&type=t1,t2&source=s1,s2&page=1&size=10
| name | type | remark |
|---|---|---|
| q | text | 需要查询的内容 |
| page | int | 起始页,从1开始,默认第一页 |
| size | int | 每次查询的条数,默认10条 |
| type | text | 文档类型,多个文档类型使用逗号分隔 |
| source | text | 文档来源,多个来源使用逗号分隔 |
元数据查询
文档类型查询:GET /types
文档来源查询:GET /sources
数据导入
POST /import
创建应用
创建一个新的索引 put /sources
{
"settings": {
"analysis": {
"analyzer": {
"pinyin_analyzer": {
"tokenizer": "pinyin_default",
"filter": [
"lowercase",
"english_stop"
]
},
"english_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"english_stop"
]
}
},
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
}
},
"tokenizer": {
"pinyin_default": {
"type": "pinyin",
"keep_separate_first_letter": false,
"keep_full_pinyin": true,
"keep_original": true,
"limit_first_letter_length": 16,
"lowercase": true,
"remove_duplicated_term": true
},
"ik_smart": {
"type": "ik_smart",
"use_smart": true
}
}
}
},
"mappings": {
"properties": {
"type": {
"type": "keyword"
},
"title": {
"type": "text",
"fields": {
"english": {
"type": "text",
"analyzer": "english_analyzer"
},
"pinyin": {
"type": "text",
"analyzer": "pinyin_analyzer"
}
}
},
"summary": {
"type": "text",
"fields": {
"english": {
"type": "text",
"analyzer": "english_analyzer"
},
"pinyin": {
"type": "text",
"analyzer": "pinyin_analyzer"
}
}
},
"content": {
"type": "text",
"fields": {
"english": {
"type": "text",
"analyzer": "english_analyzer"
},
"pinyin": {
"type": "text",
"term_vector": "with_offsets",
"analyzer": "pinyin_analyzer",
"boost": 10
}
}
},
"datetime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"url": {
"type": "keyword"
},
"source": {
"type": "keyword"
}
}
}
}
或删除