太阳黑子 – 提升文本中早期匹配发生的记录
例如,假设我的数据库中有一条记录有"Hormel Corporation"
,我的搜索字词就像"Hormel Corned Beef 16 Ounces"
。 正如我目前的配置一样,最好的结果将是其他记录,即使"Hormel Corporation"
是我正在寻找的。 我认为我的问题的解决方案是优先考虑匹配在搜索词中最早的记录。 我已经阅读了所有的文档,但我无法弄清楚这是如何工作的。
我只有一个字段 – 名字。 我想要的记录的名称字段是“Hormel公司”,但是当我搜索“Hormel Corned Beef 16 Ounces”时,最好的结果是ISNT“Hormel公司”,但看似随机的东西,而记录我是寻找结果中的第3或第4位。
非常感谢!
我有一个类似的问题需要解决。 所以我将数据存储在许多领域:
title keywords (upto 10 words) abstract (a paragraph) text (as long as you like)
对于查询,我在具有不同权重的字段上使用了dismax查询解析器:
title^20 keywords^20 abstract^12 text^1
所以,如果你
- 很好地定义您的数据模式
- 使用dismax
- 确定查询的每个字段的权重
当你搜索“Hormel Corned Beef 16 Ounces”时,标题为“Hormel Corp”的结果将会得到更好的文件,其主体包含“……对于这道菜,我们推荐一jarHormel Corned牛肉16盎司…”
编辑OP的评论。
OP的事实是:给定n个单词的标题, 前n个单词比其余单词更重要 。
我建议一个数据模型,其中有两个字段: title_first_words
和title
。 客户端应用程序(抱歉,您不能直接使用DIH)必须从标题中提取前n个单词以存储到title_first_words
,并将完整标题存储到title
。
对于搜索,您可以将整个查询提供给dismax解析器。 查询解析器是偏向于title_first_words
例如title_first_words^4 title^1
。 因此,前n个单词将对给定的搜索产生更大的影响。
您是否尝试过提高搜索字词中每个单词的重要性,例如:
Hormel^100 Corned^20 Beef^5 16^2 Ounces^1