0

我正在改进使用 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 的新手,到目前为止还无法解决这个问题......

谢谢!

4

1 回答 1

0

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

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

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

我的领域是这样声明的:

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

这就是为什么我的增强功能不起作用的原因。所以我已经改为输入“字符串”,现在一切正常:)

于 2014-03-17T09:00:20.350 回答