gpt4 book ai didi

solr - 使用 Solr 的 NGramFilterFactory 进行相似性搜索

转载 作者:行者123 更新时间:2023-12-02 05:05:51 25 4
gpt4 key购买 nike

我正在尝试使用 Solr 中的 NGramFilterFactory(使用 Rails 中的 Sunspot)来查找类似的标题。我设法向我的 solr schema.xml 添加了一个新字段,如下所示:

<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="4"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

因为我在 Rails 应用程序中使用 sunpsot,因此通过动态字段将新字段添加到 sunspot。这一切都有效,我现在可以使用 NGramFilterFactory 搜索我的模型。我不确定的是,如何配置 solr 以搜索类似的标题。以下是我的具体问题:

  1. 当我尝试查询类似标题时,使用 dismax 查询解析器是否有意义?
  2. 如何(Minimum 'Should' Match)参数帮助我找到类似的标题?
  3. 我会根据什么来选择 ngram min。和最大。尺寸?

感谢任何反馈。

最佳答案

您可以做几件事:

  1. dismax没有模糊搜索。因此,如果您想在用户搜索“homes”或“halmes”时返回“holmes”,最好更改为 edismax 解析器。
  2. 最小“应该”匹配 可以帮助您定义搜索结果取决于匹配词数的灵 active 。假设用户正在寻找“ bat 侠暗夜”,并且您有“ bat 侠暗夜”和“ bat 侠归来”记录标记化。如果 mm 为 2,则仅返回 'Batman Dark Night',因为它匹配单词的最小数量 'Batman' 和 'Night'。另一方面,'Batman Returns' 仅匹配其中一个,因此不会返回。
  3. NGramFilterFactory 主要用于自动完成。我认为 PorterStemFilterFactory 更符合您的需求。您可以在这里找到一些信息 http://wiki.apache.org/solr/LanguageAnalysis#Notes_about_solr.PorterStemFilterFactory

关于solr - 使用 Solr 的 NGramFilterFactory 进行相似性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848306/

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