gpt4 book ai didi

ruby-on-rails - 轮胎中的自定义分析器(ElasticSearch)

转载 作者:行者123 更新时间:2023-12-03 00:43:57 25 4
gpt4 key购买 nike

我正在尝试创建此自定义分析器,由于某种原因,我遇到了Analyzer [] not found for field []错误。

settings :number_of_shards => 5,
:number_of_replicas => 2,
:analysis => {
:analyzer => {
:ticker_analyzer => {
"type" => 'custom',
"tokenizer" => 'ticker_pattern',
"filter" => [ 'word_delimiter_filter', 'standard' ]
}
},
:filter => {
:word_delimiter_filter => {
"type" => 'word_delimiter',
"preserve_original" => true
}
},
:tokenizer => {
:ticker_pattern => {
"type" => 'pattern',
"pattern" => '\w+'
}
}
} do
mapping do
# ... some more indexes that work fine, with regular analyzers
indexes :company_ticker, type: 'string', boost: 5.0, analyzer: 'ticker_analyzer', as: 'index_company_ticker'
end
end

所以我得到错误 Analyzer [ticker_analyzer] not found for field [company_ticker]

有什么想法吗?

另外,我看到了一些不需要将块传递给 settings选项的示例。我只需要关闭 settings并在之后定义 mapping,就可以了吗? (我在其他发布代码段的人中看到了此信息...)

谢谢!

-弗拉德

最佳答案

好的,这就是我遇到的实际问题,为什么它不起作用。
这是因为我试图创建一个索引,该索引将使用该模型的映射(我不是试图执行Model.create_elasticsearch_index),而是使用类似

index = Tire::Index.new('swap_index')
index.create(:mappings => MyModel.tire.mapping_to_hash)
index.import(mymodel_entries)
# and then do some swapping between the old index and the new one, through alias'es

好吧,问题在于我没有将 settings传递给新索引。我只是通过MyModel传递了 mappings,而不是 settings。所以,正确的方法是
index.create(:settings => MyMode.tire.settings, :mappings => MyModel.tire.mapping_to_hash)

这解决了我遇到的错误。

(我的示例在我的情况下仍然无法使用,因为分析仪可能因我的情况而损坏,但我只是想为可能有类似问题的用户提供帮助)

谢谢,
弗拉德

关于ruby-on-rails - 轮胎中的自定义分析器(ElasticSearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com