停止SOLR多次索引同一单词(或如何提升一个字段)

停止SOLR多次索引同一单词(或如何提升一个字段),solr,django-haystack,Solr,Django Haystack,因此,我正在运行一个俚语词典类型的网站,之前一直在使用类似mysql的网站搜索。效果不错。不管怎样,现在我正在更新这个网站,并且正在考虑使用django haystack和SOLR(似乎是最好的搜索选项之一?) 我让它运行了,但是搜索结果不太好。例如,搜索单词“LOL”将给出“Flood”作为第一个结果,因为它还有一个使用“LOL-LOL-LOL-LOL-LOL-LOL-LOL”进行泛洪的示例,而不是首先显示单词LOL 那么,是否只可能标记来自Flood示例的一个LOL(我是SOLR新手,所以我

因此,我正在运行一个俚语词典类型的网站,之前一直在使用类似mysql的网站搜索。效果不错。不管怎样,现在我正在更新这个网站,并且正在考虑使用django haystack和SOLR(似乎是最好的搜索选项之一?)

我让它运行了,但是搜索结果不太好。例如,搜索单词“LOL”将给出“Flood”作为第一个结果,因为它还有一个使用“LOL-LOL-LOL-LOL-LOL-LOL-LOL”进行泛洪的示例,而不是首先显示单词LOL

那么,是否只可能标记来自Flood示例的一个LOL(我是SOLR新手,所以我的想法可能是错误的)。或者我可以提高单词标题的价值(因此搜索词与标题匹配的单词排在第一位,搜索词与示例匹配的单词排在第二位)?我已经尝试过django haystack field boost,但它似乎一点作用都没有

提前谢谢

编辑:以下是SOLR方案(有点大,主要由Django Haystack自动生成):


身份证件
文本

你上次的评论为我澄清了这一点。你需要看的是,在你的情况下,在特殊情况下,你的领域会得到提升

为了在字段上使用该查询时间提升,您需要使用Solr的Demax处理程序或其扩展名eDiscoveryMax处理程序。您可以通过它的“搜索哪些字段以及每个字段的提升如何”来告诉处理程序

e、 g

  • 如果文档与word中的命中率匹配,则将该分数增加10
  • 如果文档与标题匹配,则增加该分数5
  • 如果文档与示例中的命中匹配,则将该分数增加0.5,这相当于减少
您可以在发送给Solr的每个搜索查询中添加qf参数,也可以在solrconfig.xml中配置该参数


埃迪斯马克斯
*:*
word ^10.0标题^5.0 exmaple ^0.5
*,得分
100%
进一步阅读


您能给出您的模式吗?特别是您的自定义字段类型非常有趣。由于“Flood”不包含“lol”,我感兴趣的是这是如何发生的…添加了Schema。但它之所以在《洪水》中流行起来,是因为它的索引是:标题+解释+示例。所以这是有道理的。这是一本俚语词典,所以每个单词都有一个单词/标题、解释和一个例子。所有这些都被编入了索引,但当你搜索LOL时,你当然会想要一个带有单词/标题LOL的单词,而不是一个包含LOL的示例(但在某些情况下,你可能也想要这个,但在结果列表的下方)
qf="word^10.0 title^5.0 exmaple^0.5"