gpt4 book ai didi

ruby-on-rails - Sunspot SOLR KeywordTokenizer - 搜索不会返回正确的结果

转载 作者:行者123 更新时间:2023-12-04 03:36:33 25 4
gpt4 key购买 nike

所以我在我的 Rails 项目中使用了太阳黑子,并且我正在索引歌曲名称。 我想做的是当我搜索特定术语(例如“迷失自我”)时,在我的结果列表顶部显示包含查询 完全匹配的记录(有空格和一切)。

为此,我决定定义一个新的 fieldTypeschema.xml使用 KeywordTokenizerFactory像这样(我打算将它与带有 StandardTokenizer 的普通文本字段一起使用,同时使用这两个并提升使用 KeywordTokenized 字段得出的结果):

<fieldType name="text_exact" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
</analyzer>
</fieldType>

并添加一个像这样的动态字段(不确定它是否应该为此目的多值,也许有人也可以启发我):
<dynamicField name="*_exact" stored="false" type="text_exact" multiValued="true" indexed="true"/>

现在,在我的 song.rb我在 searchable 中有这个文件配置:
text :song_name do
self.name
end

text :song_name_exact, as: :song_name_exact do
self.name
end

问题是当我尝试使用 song_name_exact 进行搜索时我得到的字段 没有如果我的查询包含空格,则结果(因此,如果我有一首名为 foo 的歌曲并且我搜索 foo 它会找到它,但如果我有一首名为 foo bar 并搜索 foo bar ,则搜索查询返回 no结果。

所以首先,我会问我的方法是否正确,为什么使用关键字标记器在字段上的搜索不能正常工作?

最佳答案

只搜索“loose yourself”没有结果的原因是生成的token KeywordTokenizerFactory 是“失去自己”,但 sunspot 使用的 queryParse 将您的查询分成两个标记“失去”和“你自己”

解决方案

所以你应该通过在搜索中添加双引号来搜索整个短语 "\"迷失自我\""

关于ruby-on-rails - Sunspot SOLR KeywordTokenizer - 搜索不会返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631699/

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