elasticsearch 允许在elasticsearch中标记基于hypen的单词,elasticsearch,lucene,full-text-search,elasticsearch,Lucene,Full Text Search" /> elasticsearch 允许在elasticsearch中标记基于hypen的单词,elasticsearch,lucene,full-text-search,elasticsearch,Lucene,Full Text Search" />

elasticsearch 允许在elasticsearch中标记基于hypen的单词

elasticsearch 允许在elasticsearch中标记基于hypen的单词,elasticsearch,lucene,full-text-search,elasticsearch,Lucene,Full Text Search,我有一个字段name的以下映射,该字段将保存电子商务的产品名称 'properties': { 'name': { 'type': 'text', 'analyzer': 'standard', 'fields': { 'english': { 'type': 'text', 'analyzer': 'english

我有一个字段
name
的以下映射,该字段将保存电子商务的产品名称

   'properties': {
       'name': {
           'type': 'text',
           'analyzer': 'standard',
           'fields': {
                'english': {
                'type': 'text',
                'analyzer': 'english'
            },
        }
    },
假设我有以下要索引/搜索的字符串

一包三件T恤

这两个分析程序分别生成术语[t,shirt]、[t,shirt]

这给了我一个问题:当用户键入“男士T恤”时,无法得到任何结果

我怎样才能在倒排索引中得到这个词,比如[t,shirts,shirt,tshirt',tshirts]


我试图调查词干分析器的排除情况,但找不到任何处理连字符的方法。如果找到更通用的解决方案,而不是手动进行排除,我也会很有帮助。因为可能有很多我现在不知道的可能性,例如
电子邮件,电子邮件

空白标记器可以完成这项工作

将产生

[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]

我找到了一个解决方案,我想它可以帮助我达到预期的结果。然而,我仍然想看看是否有一些好的和推荐的方法来解决这个问题

基本上,我将使用多个字段来解决这个问题,其中第一个分析器是标准的,第二个是我的自定义分析器

根据Elasticsearch文档,
chars\u过滤器
发生在
标记器
之前。因此,我们的想法是删除带有空字符的
-
,这将使
t-shirt
变成
tshirt
。因此,标记器将在反向索引中将整个术语标记为
tshirts

GET _analyze
{
   "tokenizer": "standard",
   "filter": [
      "lowercase",
      {"type": "stop", "stopwords": "_english_"}
   ],
   "char_filter" : [
       "html_strip", 
       {"type": "mapping", "mappings": ["- => "]}
    ],
   "text": "these are t-shirts <table>"
}
GET\u分析
{
“标记器”:“标准”,
“过滤器”:[
“小写”,
{“type”:“stop”,“stopwords”:“\u english”}
],
“字符过滤器”:[
“html_strip”,
{“类型”:“映射”,“映射”:[“-=>”]}
],
“文本”:“这些是t恤”
}
将提供以下代币

{
   "tokens": [
      {
         "token": "tshirts",
         "start_offset": 10,
         "end_offset": 18,
         "type": "<ALPHANUM>",
         "position": 2
      }
   ]
}
{
“代币”:[
{
“令牌”:“T恤”,
“起始偏移量”:10,
“端部偏移”:18,
“类型”:“,
“职位”:2
}
]
}

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-谢谢你的注意。修正了。嗨,当人们搜索
t恤时,这可以帮助我。我更想要的是
tShirt
,因此在您的示例中,需要的术语是
[brownfoxes]
{
   "tokens": [
      {
         "token": "tshirts",
         "start_offset": 10,
         "end_offset": 18,
         "type": "<ALPHANUM>",
         "position": 2
      }
   ]
}