4

例如,假设我的数据库中有一条包含文本的记录,"Hormel Corporation"而我的搜索词类似于"Hormel Corned Beef 16 Ounces". 按照我目前的配置,最好的结果将是其他记录,即使"Hormel Corporation"是我正在寻找的记录。我认为我的问题的解决方案是优先考虑匹配项在搜索词中最早出现的记录。我已经阅读了所有文档,但我无法弄清楚这可能是如何工作的。

我只有一个字段——名称。我想要的记录的名称字段为“Hormel Corporation”,但是当我搜索“Hormel Corned Beef 16 Ounces”时,顶部结果是 ISNT“Hormel Corporation”,但似乎是随机的,而我的记录是寻找是结果中的第 3 或第 4。

非常感谢!

4

2 回答 2

5

我有一个类似的问题要解决。所以我将我的数据存储在许多领域:

title
keywords (upto 10 words)
abstract (a paragraph)
text (as long as you like)

对于查询,我在具有不同权重的字段上使用了 dismax 查询解析器:

title^20
keywords^20
abstract^12
text^1

所以如果你

  1. 很好地定义您的数据架构
  2. 使用dismax
  3. 确定查询的每个字段权重

当您搜索“Hormel Corned Beef 16 Ounces”时,标题为“Hormel Corp”的结果将在正文包含“...对于这道菜,我们推荐一罐 Hormel Corned Beef 16 Ounces...”的文档中得分更高。


编辑 OP 的评论。

OP 的事实是:给定一个包含 n 个单词的标题,前 n 个单词比其他单词更重要。

我建议一个数据模型,其中有两个字段:title_first_wordstitle. 客户端应用程序(抱歉,您不能直接使用 DIH)必须从 title 中提取前 n 个单词以存储到title_first_words,并将完整的标题存储到title.

对于搜索,您可以将整个查询提供给 dismax 解析器。查询解析器偏向于title_first_wordslike title_first_words^4 title^1。因此,前 n 个词将对给定搜索产生更大的影响。

于 2012-02-02T07:29:27.230 回答
0

您是否尝试过提高搜索词中每个单词的重要性,例如:

Hormel^100 Corned^20 Beef^5 16^2 Ounces^1
于 2012-02-01T19:57:22.260 回答