如何在 solr 中对精确的查询文本进行大量权重,而不是将其作为子字符串包含的结果?



我正在使用名称搜索,出于某种原因,当我查询包含查询的"sam">文档作为子字符串时,如"samara"、">samir">"samuel">以看似相等的权重返回。

这只是Solr的内置功能,用于解析包含搜索词的单词作为子字符串吗?有没有办法在继续使用替代方案之前对确切查询本身应用更大的权重?

我已经有两个单独的fieldTypes来比同义词更重原始文本的权重,但我无法找到解决这个子字符串问题的方法,因为它似乎是 Solr 固有的。

这是我的字段类型定义:

<fieldType class="solr.TextField" name="fullTextName" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

任何帮助将不胜感激。

在 Solr 中是可能的:

1( 您定义 2 种字段类型:完整文本名称和完整文本名称精确 它们之间的区别在于索引时间分析,特别是您希望确切的字段类型没有边缘 Ngram 标记筛选器。

2( 您创建 2 个字段,每种类型一个

3( 定义使用 DisMax 查询解析器或 Edismax 查询解析器的请求处理程序。[1]

4( 要使用的一个请求参数是"qf",此参数允许您表示要参与搜索的不同字段,并用不同的提升对它们进行加权。 在您的情况下,您可以使用:

<str name="qf">fullTextNameExact^3 fullTextName</str>

这将提高更强的精确匹配结果,但仍允许自动完成。

[1] https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser

相关内容

  • 没有找到相关文章

最新更新