Elasticsearch如何使用同义词搜索富文本html标签过滤以及分权限过滤搜索结果

如何建立恰当的索引结点

{
    "mappings": {
        "data": {
        "properties": {
          "answer_id": {
            "type": "long"
          },
          "content": {
            "type": "text",
            "analyzer": "html_analyze"
          },
          "question_id": {
            "type": "long"
          },
          "title": {
            "type": "text",
            "analyzer": "html_analyze"
          },
          "authority":{    //权限数组[1,2,3,4]
              "type": "byte"
          }
        }
      }
    },
    "settings": {
      "analysis": {
          "filter": {    //定义一个同义词过滤器
            "local_synonym": {
              "type": "synonym",
              "synonyms_path": "analysis/synonym.txt"
            }
          },
          "analyzer": {
            "html_analyze": {    //定义一个html标签过滤的分词器
              "filter": [
                "local_synonym"
              ],
              "char_filter": [
                "my_char_filter"
              ],
              "type": "custom",
              "tokenizer": "ik_max_word"
            }
          },
          "char_filter": {
            "my_char_filter": {
              "escaped_tags": [],
              "type": "html_strip"
            }
          }
        }
    }
}
上传到ElasticSearch的数据格式如下:
{
    "answer_id": 1,
    "content": "内容",
    "question_id": 2,
    "title": "标题",
    "authority": [1,2,3,4] //权限有数组控制,每个user有自己对应的权限
}

如何使用高亮并且进行权限过滤搜索

 {
    "from": 0,
    "size": 10,
    "query":{
        "bool": {
            "must":{
                "multi_match": {
                    "query": "测试",
                    "type": "best_fields",
                    "fields": ["title^2", "content"],
                    "tie_breaker": 0.3
                }
            },
            "filter": {
                "term": {
                    "authority": "1" // 过滤出权限为1的结果集
                }
            }
        }
    },
    "highlight": {
        "pre_tags": ["<span style='color: rgb(230, 0, 0);'>"],
        "post_tags": ["</span>"],
        "fields": {
            "title": {"number_of_fragments":0},
            "content": {"fragment_size": 100}
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,437评论 0 13
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,596评论 0 25
  • 原文链接:MySQL索引背后的数据结构及算法原理[http://blog.codinglabs.org/artic...
    文档随手记阅读 5,724评论 0 15
  • 课程简介 躺在床上睡不着,羽化登仙不用药。 现在中国人的睡眠状况,到底有多糟? 据《2017中国睡眠质量报告》数据...
    慮祺阅读 1,265评论 0 0
  • 生命一样,灵魂不同,多学习。
    矞倾阅读 1,477评论 0 2

友情链接更多精彩内容