常用 grams 分词器
编辑常用 grams 分词器
编辑为指定的一组常用词生成二元语法。
例如,您可以将is
和the
指定为常用词。然后,此分词器会将标记[the, quick, fox, is, brown]
转换为[the, the_quick, quick, fox, fox_is, is, is_brown, brown]
。
当您不想完全忽略常用词时,可以使用common_grams
分词器代替停止词分词器。
此分词器使用 Lucene 的CommonGramsFilter。
示例
编辑下面的分析 API请求为is
和the
生成二元语法。
resp = client.indices.analyze( tokenizer="whitespace", filter=[ { "type": "common_grams", "common_words": [ "is", "the" ] } ], text="the quick fox is brown", ) print(resp)
response = client.indices.analyze( body: { tokenizer: 'whitespace', filter: [ { type: 'common_grams', common_words: [ 'is', 'the' ] } ], text: 'the quick fox is brown' } ) puts response
const response = await client.indices.analyze({ tokenizer: "whitespace", filter: [ { type: "common_grams", common_words: ["is", "the"], }, ], text: "the quick fox is brown", }); console.log(response);
GET /_analyze { "tokenizer" : "whitespace", "filter" : [ { "type": "common_grams", "common_words": ["is", "the"] } ], "text" : "the quick fox is brown" }
分词器生成以下标记:
[ the, the_quick, quick, fox, fox_is, is, is_brown, brown ]
添加到分析器
编辑下面的创建索引 API请求使用common_grams
分词器来配置新的自定义分析器。
resp = client.indices.create( index="common_grams_example", settings={ "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams" ] } }, "filter": { "common_grams": { "type": "common_grams", "common_words": [ "a", "is", "the" ] } } } }, ) print(resp)
response = client.indices.create( index: 'common_grams_example', body: { settings: { analysis: { analyzer: { index_grams: { tokenizer: 'whitespace', filter: [ 'common_grams' ] } }, filter: { common_grams: { type: 'common_grams', common_words: [ 'a', 'is', 'the' ] } } } } } ) puts response
const response = await client.indices.create({ index: "common_grams_example", settings: { analysis: { analyzer: { index_grams: { tokenizer: "whitespace", filter: ["common_grams"], }, }, filter: { common_grams: { type: "common_grams", common_words: ["a", "is", "the"], }, }, }, }, }); console.log(response);
PUT /common_grams_example { "settings": { "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams" ] } }, "filter": { "common_grams": { "type": "common_grams", "common_words": [ "a", "is", "the" ] } } } } }
可配置参数
编辑-
common_words
-
(必填*,字符串数组) 标记列表。分词器将为这些标记生成二元语法。
此参数或
common_words_path
参数必填一个。 -
common_words_path
-
(必填*,字符串) 包含标记列表的文件路径。分词器将为这些标记生成二元语法。
此路径必须是绝对路径或相对于
config
位置的相对路径。该文件必须为 UTF-8 编码。文件中每个标记都必须用换行符隔开。此参数或
common_words
参数必填一个。 -
ignore_case
- (可选,布尔值) 如果为
true
,则常用词匹配不区分大小写。默认为false
。 -
query_mode
-
(可选,布尔值) 如果为
true
,则分词器会从输出中排除以下标记:- 常用词的单元语法
- 后跟常用词的术语的单元语法
默认为
false
。我们建议为搜索分析器启用此参数。例如,您可以启用此参数并将
is
和the
指定为常用词。此分词器会将标记[the, quick, fox, is, brown]
转换为[the_quick, quick, fox_is, is_brown,]
。
自定义
编辑要自定义common_grams
分词器,请复制它以创建新自定义分词器的基础。您可以使用其可配置参数修改分词器。
例如,以下请求创建一个自定义common_grams
分词器,其中ignore_case
和query_mode
设置为true
。
resp = client.indices.create( index="common_grams_example", settings={ "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams_query" ] } }, "filter": { "common_grams_query": { "type": "common_grams", "common_words": [ "a", "is", "the" ], "ignore_case": True, "query_mode": True } } } }, ) print(resp)
response = client.indices.create( index: 'common_grams_example', body: { settings: { analysis: { analyzer: { index_grams: { tokenizer: 'whitespace', filter: [ 'common_grams_query' ] } }, filter: { common_grams_query: { type: 'common_grams', common_words: [ 'a', 'is', 'the' ], ignore_case: true, query_mode: true } } } } } ) puts response
const response = await client.indices.create({ index: "common_grams_example", settings: { analysis: { analyzer: { index_grams: { tokenizer: "whitespace", filter: ["common_grams_query"], }, }, filter: { common_grams_query: { type: "common_grams", common_words: ["a", "is", "the"], ignore_case: true, query_mode: true, }, }, }, }, }); console.log(response);
PUT /common_grams_example { "settings": { "analysis": { "analyzer": { "index_grams": { "tokenizer": "whitespace", "filter": [ "common_grams_query" ] } }, "filter": { "common_grams_query": { "type": "common_grams", "common_words": [ "a", "is", "the" ], "ignore_case": true, "query_mode": true } } } } }