同义词分析器不工作

2024-01-05

这是我的设置:

{
"countries": {
"aliases": {},
"mappings": {
  "country": {
    "properties": {
      "countryName": {
        "type": "string"
      }
    }
  }
},
"settings": {
  "index": {
    "creation_date": "1472140045116",
    "analysis": {
      "filter": {
        "synonym": {
          "ignore_case": "true",
          "type": "synonym",
          "synonyms_path": "synonym.txt"
        }
      },
      "analyzer": {
        "synonym": {
          "filter": [
            "synonym"
          ],
          "tokenizer": "whitespace"
        }
      }
    },
    "number_of_shards": "5",
    "number_of_replicas": "1",
    "uuid": "7-fKyD9aR2eG3BwUNdadXA",
    "version": {
      "created": "2030599"
    }
  }
},
"warmers": {}
}
}

My synonym.txt文件位于configmain 里面的文件夹elasticsearch folder.

这是我的查询:

query: {
    query_string: {
        fields: ["countryName"],
        default_operator: "AND",
        query: searchInput,
        analyzer: "synonym"
        }
     }

中的话synonym.txt are: 我们,美国,美国.

所以这是行不通的。有趣的是搜索正常进行,except因为当我输入其中的任何单词时synonym.txt文件。例如,当我通常输入us进入搜索,我会得到结果。有了这个分析仪,us没有给我任何东西。

我已经搞定了close and open到我的ES服务器,仍然不起作用。

EDIT

一个例子document:

{
    "_index": "countries",
    "_type": "country",
    "_id": "57aabeb80057405968de152b",
    "_score": 1,
    "_source": {
      "countryName": "United States"
    }

的例子searchInput(这是来自前端的):

united states

EDIT #2:

这是我更新的索引配置文件:

{
"countries": {
    "aliases": {},
    "mappings": {},
    "settings": {
        "index": {
            "number_of_shards": "5",
            "creation_date": "1472219634083",
            "analysis": {
                "filter": {
                    "synonym": {
                        "ignore_case": "true",
                        "type": "synonym",
                        "synonyms_path": "synonym.txt"
                    }
                },
                "analyzer": {
                    "synonym": {
                        "filter": [
                            "synonym"
                        ],
                        "tokenizer": "whitespace"
                    }
                }
            },
            "country": {
                "properties": {
                    "countryName": {
                        "type": "string",
                        "analyzer": "synonym"
                    },
                    "number_of_replicas": "1",
                    "uuid": "50ZwpIVFTqeD_rJxlmd59Q",
                    "version": {
                        "created": "2030599"
                    }
                }
            },
            "warmers": {}
        }
    }
}
}

当我尝试添加文档并对所述文档进行搜索时,synonym分析仪对我不起作用。

EDIT #3

以下是索引中的 2 个文档:

{
"took": 3,
"timed_out": false,
"_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
},
"hits": {
    "total": 2,
    "max_score": 1,
    "hits": [{
        "_index": "stocks",
        "_type": "stock",
        "_id": "2",
        "_score": 1,
        "_source": {
            "countryName": "United States"
        }
    }, {
        "_index": "stocks",
        "_type": "stock",
        "_id": "1",
        "_score": 1,
        "_source": {
            "countryName": "Canada"
        }
    }]
}
}

你很接近,但我建议仔细阅读文档中的这一部分 https://www.elastic.co/guide/en/elasticsearch/guide/current/synonyms.html更好地了解此功能。

作为解决方案:

PUT /countries
{
  "mappings": {
    "country": {
      "properties": {
        "countryName": {
          "type": "string",
          "analyzer": "synonym"
        }
      }
    }
  },
  "settings": {
    "analysis": {
      "filter": {
        "synonym": {
          "ignore_case": "true",
          "type": "synonym",
          "synonyms_path": "synonym.txt"
        }
      },
      "analyzer": {
        "synonym": {
          "filter": [
            "lowercase",
            "synonym"
          ],
          "tokenizer": "whitespace"
        }
      }
    }
  }
}

您需要删除索引并使用上面的映射重新创建它。 然后使用这个查询:

  "query": {
    "query_string": {
      "fields": [
        "countryName"
      ],
      "default_operator": "AND",
      "query": "united states"
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同义词分析器不工作 的相关文章

随机推荐

  • Jetty Servlet 不运行——而是获取目录列表

    我正在尝试让在 Netbeans 中构建并运行的 servlet 在 jetty 服务器上运行 本地部署始终有效 但是在 Jetty 上部署会导致目录列表 而不是实际运行的 servlet 问题似乎出在上下文配置上 但我不知道我做错了什么
  • Jax-RS 未使用 @provider 注释注册资源

    我有一个使用 jersey api 在 weblogic 12c 中运行的休息应用程序 我有一个带有注释 provider 的http 请求过滤器类 但是 在部署应用程序时 过滤器类未向我在 ApplicationConfig 类中添加的其
  • 具有 Owin 身份验证的 Mono

    我有一个在 Mono 中运行的 Owin 应用程序 我正在尝试让身份验证在其上正常工作 我使用了以下信息这一页 https coding abel nu 2014 06 writing an owin authentication midd
  • 如何使用for循环matlab调用顺序变量? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一堆变量叫做length act
  • -O0、-O1 和 -g 有什么区别

    我想知道如何使用 O0 O1 和 g 在库中启用调试符号 有些建议使用 O0 来启用调试符号 有些建议使用 g 那么 g 和 O0 之间的实际区别是什么 01 和 O0 之间的区别是什么 哪个最好使用 O0是优化级别 0 无优化 与省略 O
  • 无法从“pyproj”导入名称“CRS”以使用 osmnx 库

    I have used a fresh anaconda install to download and install all the required modules for osnmx library but I got the fo
  • 我们什么时候使用ANTLR

    谁能指导我在 ASP Net C 项目中使用 ANTLR dll 的目的 我刚刚注意到antlr 运行时 Antlr3 运行时 Antlr3 实用程序某些项目中引用的程序集 如果能引用一些现实世界的例子或者任何指向网页的链接都会有用 那就太
  • 如何在文本区域更改时将“必需”属性添加到输入?

    我需要在文本区域 orderComments 中输入文本的情况下将 required 属性添加到 html select toDept 中 下面是我的代码 我缺少什么 我需要在更改事件或其他事件上运行 jquery 吗 document r
  • EJB企业应用程序不需要EJB接口

    我创建了一个 Java EE 应用程序并向 EJB 项目添加了一个无状态会话 bean EJB 项目是 web WAR 项目中的依赖项 我将在 EJB 项目中创建的 EJB 注入到我的一个 servlet 中 这工作正常 我能够在 Web
  • 我可以获取字符串形式的 saml-token 吗?

    我正在使用 spring security saml2 1 0 0 RELEASE 它运作良好 对我来说非常好 但新的要求提出了 我需要 saml token 作为字符串 我可以将 saml token 作为字符串获取吗 我在日志中找到 s
  • 在 Android Studio 2.3 上创建项目时出错

    我已将 Android Studio 从 2 2 升级到 2 3 当我创建带有导航活动的新 Android 项目时 出现两个错误 Error java util concurrent ExecutionException java lang
  • Java 9 的 Maven 编译问题

    尝试使用 JDK 9 0 1 编译 Maven 项目时 我遇到了这个堆栈跟踪 但没有太多解释 Exception in thread main java lang AssertionError at jdk compiler com sun
  • 使用 C# 为所有桌面快捷方式创建自定义右键单击上下文菜单项(Windows 资源管理器)

    问题很简单 我有很多桌面快捷方式 它们指向很多文件 但我也有很多快捷方式 它们指向这些快捷方式所指向的目录 我想通过简单地为所有快捷方式 lnk 文件 添加另一个右键菜单选项来消除这种冗余 该选项允许您将 explorer exe 打开到包
  • 使用 Google Apps 脚本将 Google 表格中的行追加到 Big Query 中的现有表

    我有一个 Google 表格 我想从中选择一些单元格并将它们作为行附加到 Big Query 中已存在的表格中 我编写了以下代码 运行时没有任何错误 但是当我检查 BQ 中的表时 它没有更新 function myFunction var
  • 让 MATLAB Mex 搜索特定文件夹中的库

    我创建了一个 mex 函数 它依赖于一个依赖于另一个库的库 当我执行该函数时 它在运行时输出以下错误 Invalid MEX file Library not loaded usr local lib libgomp 1 dylib 我的计
  • WPF 检查系统上是否安装了 python

    我的 wpf 应用程序调用 python 脚本来生成输出 稍后显示在 UI 中 如果用户系统上未安装 python 为了避免应用程序崩溃 我需要执行检查 目前我已经使用以下方法实现了这一点 ProcessStartInfo start ne
  • Groovy 重写compareTo

    我正在使用 Groovy 类别在 DSL 下工作 我需要覆盖 重载 操作员 然而却是已知问题 http jira codehaus org browse GROOVY 3364 当类实现Comparable Groovy 会调用compar
  • ORA-01830: 日期格式图片在转换整个输入字符串之前结束

    SQL 在大多数安装上都可以正常工作 但是 我在加拿大安装 Oracle 时遇到问题 可能是日期本地化问题 http www google com search q ORA 01830 http www google com search
  • 如何在 C 中将 double 转换为 int?

    double a a 3669 0 int b b a 我在 b 中得到 3668 而不是 3669 我该如何解决这个问题 如果有 3559 8 这样的我也想要 3559 而不是 3560 我怀疑你不知道actually有这个问题 我怀疑你
  • 同义词分析器不工作

    这是我的设置 countries aliases mappings country properties countryName type string settings index creation date 1472140045116