打开Search Server:Facet术语仅限于索引

时间:2016-03-30 17:35:30

标签: faceted-search open-search-server

我在Linux机器上使用Open Search Server。一切运行良好,但任何搜索的构面结果数量似乎都限于我的索引中的文档数量,这是不正确的。

我正在为用户编制索引,用户也有标记。我的数据库中目前有2个用户,他们标有5个不同的标签。但是,如果我运行一个返回两个用户的搜索,则只返回2个不同的标签作为facet(应该有5个)。如果我然后将第三个用户添加到我的索引(并且新用户有0个标签),我的搜索将返回3个标签作为方面。

据我所知,这只是方面的一个问题。我能够在5个标签中的任何一个上成功过滤,并且我可以成功搜索所有5个标签的文本。

我的索引:

user_1  |  tag_1, tag_2, tag_3, tag_4
user_2  |  tag_2, tag_4, tag_5

搜索“”:

Results:
  user_1
  user_2

Facets Actually Returned:
  tag_1 (1)
  tag_2 (2)

Facets That Should Be Returned:
  tag_1 (1)
  tag_2 (2)
  tag_3 (1)
  tag_4 (2)
  tag_5 (1)

搜索“tag_5”:

Results:
  user_2

Facets Actually Returned:
  tag_1 (0)
  tag_2 (1)

Facets That Should Be Returned:
  tag_1 (0)
  tag_2 (1)
  tag_3 (0)
  tag_4 (1)
  tag_5 (1)

之前有没有遇到过这个?有建议吗?

编辑:应该提到,多值在方面设置为“是”。

1 个答案:

答案 0 :(得分:0)

OpenSearchServer知道两种计算方面的方法。 “单值方法”和“多值方法”。

修改您的搜索请求并将“多值”设置为“是”。

enter image description here

多值字段还有两种实现方式。一个使用“TermDocs”功能,另一个使用“TermVectors”。

https://github.com/jaeksoft/opensearchserver/blob/master/src/main/java/com/jaeksoft/searchlib/facet/Facet.java

要根据TermVectors测试一个,你必须在分面字段上启用TermVector(将其设置为Yes)并再次索引数据。