gpt4 book ai didi

ruby-on-rails - solr sunspot 精确搜索词

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:15 24 4
gpt4 key购买 nike

我有大约 50 M 推文的存档。我想看看其他用户是否互相提及。但也有问题:有一个名为 facebook 的帐户 (www.twitter.com/facebook)。我想搜索那些提及此帐户的推文,而不是简单地说 facebook。

所以我使用 sunspot 的语法是:

search = FeedEntry.search do        
without(:person_id,person.id) # No self referencing
fulltext "@#{person.username}" #Find those Feeds that mention this person
paginate :page => 1, :per_page => 1000000 #Make sure we dont paginate
end

Solr 似乎完全忽略了 @ 符号,即使在搜索时将用户名放在“”或“”中也没关系。

search = FeedEntry.search{fulltext "facebook -RT"}
=> <Sunspot::Search:{:start=>0, :defType=>"dismax", :fq=>["type:FeedEntry"], :rows=>30, :q=>"facebook -RT", :fl=>"* score", :qf=>"retweeters_text text_text"}>
>> search.total
=> 299525

我能做什么?我必须检查这些结果并使用 ruby​​ "include?"@facebook"来排除耗时的误报。

我怀疑这与我使用的分词器工厂有关: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.KeywordTokenizerFactory

我在 schema.xml 中的配置是:

<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

我认为将 StandardTokenizerFactory 更改为 WhitespaceTokenizerFactory 会对我的情况有所帮助。顺便提一句。有没有办法在我的语料库上看到这些工厂生产了哪些代币?

我的最后一个问题是,更改分词器后是否需要重新编制索引?我的假设是肯定的。

干杯托马斯

最佳答案

如果您可以在为这些推文编制索引并在 solr 中使用单独的字段时解析哈希标签、转推、@name 等,那么您将拥有更强大的搜索(恕我直言)。

如您所述,更改为空白分词器应该会有所帮助,您将需要重新编制索引。您还需要在搜索期间使用相同的分词器和分析器。

关于ruby-on-rails - solr sunspot 精确搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153155/

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