我已经使用Elastic实现了搜索。以下是我的Analyse
配置
$aAnalizerArray = [
"edgeTokenizer" => [
"tokenizer"=>"edgeTokenizer",
"filter" => [
"word_delimiter_graph",
"lowercase",
"unique"
]
],
];
$wbTokenizer = [
"edgeTokenizer"=>[
"type"=> "nGram", //edgeNGram
"min_gram"=>"2",
"max_gram"=> "8",
"token_chars"=> [
"letter",
"digit"
]
]
];
但是,当我插入SeaShell Inc
时,出现如下错误:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=1,endOffset=3,lastStartOffset=3 for field 'company_name'"}],"type":"illegal_argument_exception","reason":"startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=1,endOffset=3,lastStartOffset=3 for field 'company_name'"},"status":400}
但是如果它是Sea Shell Inc
,那么就没有问题。我的弹性版本是6.X
有什么解决方法吗?
答案 0 :(得分:0)
这个问题可能是因为 word_delimiter_graph 的配置参数引起的,因为有些 word_delimiter_graph 中的设置可以生成多位置标记,索引不支持这些标记。下面列出了可能导致此问题的配置参数:
adjust_offsets:当设置为“false”时
catenate_all:当设置为“true”时
catenate_numbers:当设置为“true”时
catenate_words:当设置为“true”时
preserve_original:设置为“真”时
有关更多信息,您可以查看 Elastic search here 的文档。