D-N*_*ice 4 solr ruby-on-rails sunspot sunspot-rails sunspot-solr
例如,假设我的数据库中有一条记录有文本,"Hormel Corporation"而我的搜索字词就像"Hormel Corned Beef 16 Ounces".正如我目前的配置所示,最好的结果将是其他记录,即使"Hormel Corporation"是我正在寻找的记录.我认为我的问题的解决方案是优先考虑匹配在搜索词中最早的记录.我已经阅读了所有的文档,但我无法弄清楚这是如何工作的.
我只有一个字段 - 名字.我想要的记录的名称字段是"荷美尔公司",但是当我搜索"荷美尔腌牛肉16盎司"时,最好的结果是ISNT"荷美尔公司",但看似随机的东西,而记录我是寻找结果中的第3或第4位.
非常感谢!
我有一个类似的问题需要解决.所以我将数据存储在许多领域:
title
keywords (upto 10 words)
abstract (a paragraph)
text (as long as you like)
Run Code Online (Sandbox Code Playgroud)
对于查询,我在具有不同权重的字段上使用了dismax查询解析器:
title^20
keywords^20
abstract^12
text^1
Run Code Online (Sandbox Code Playgroud)
所以,如果你
当你搜索"荷美尔咸牛肉16盎司",因此,其标题为"荷美尔公司"将比分较好,其体内含有的文档"......对于菜,我们reccomend荷美尔咸牛肉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个单词将对给定的搜索产生更大的影响.
| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |