【问题标题】:Boost function with custom indexed string field does not work. Solr 3.6具有自定义索引字符串字段的 Boost 功能不起作用。索尔 3.6
【发布时间】:2014-03-16 23:19:34
【问题描述】:

我正在改进使用 Solr 3.6 的现有搜索系统

我正在尝试使用以下功能提升搜索结果:

{!boost b=recip(sub(1,floor(strdist("someText",myField,jw))),1000000,1,1)}searchText
  1. searchText - 用户搜索的一些文本;
  2. myField - 自定义索引文档的字段,值可以为空或非空字符串;

简而言之,这个函数将myField的值不等于someText的所有搜索结果除以1000001分。这样,具有指定 myField 值的结果将按其原始分数排序。

因此,字段存在,值存在于字段中,但结果的分数也被除,结果在深处……

当我使用时:

fq=myField:[* TO *]

Solr 过滤掉字段值不是空字符串的结果。所以,被认出来了……

还有另一个遗留字符串字段。当我使用该字段应用我的函数时,一切正常。但是当我使用我的领域时它失败了。

您对可能出现的问题有任何想法吗?我应该寻找什么?

请帮忙。我已经花了很多时间没有成功,但我是 Solr 的新手,到目前为止还无法解决这个问题......

谢谢!

【问题讨论】:

  • myField 和 legacy 字段的定义是什么?
  • 我已经解决了我的问题并发布了答案。无论如何谢谢! :) 看起来你有同样的假设。

标签: solr lucene solr-boost


【解决方案1】:

我一直在问别人,所以,幸运的是,我已经解决了我的问题 :)

所以问题出在 schema.xml 中的字段声明中。 遗留字段是这样声明的:

<field name="searchText" type="string" indexed="true" stored="true" multiValued="false"/>

我的字段是这样声明的:

<field name="myField" type="text" indexed="true" stored="true" multiValued="false"/>

这就是为什么我的增强功能不起作用的原因。 所以我改为输入 "string" 并且现在一切正常:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2011-11-16
    • 1970-01-01
    • 2010-12-23
    • 2018-08-12
    • 2016-09-27
    相关资源
    最近更新 更多