Open Search Server:Facet 术语仅限于索引中的文档数量

Open Search Server: Facet terms limited to number of documents in index

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

我正在为用户编制索引,用户有标签。我的数据库中目前有 2 个用户,他们被标记了 5 个不同的标签。但是,如果我 运行 搜索 return 两个用户,只有 2 个不同的标签被 return 编辑为构面(应该有 5 个)。如果我然后将第 3 个用户添加到我的索引(并且新用户有 0 个标签),我的搜索将 return 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)

有人遇到过这个吗?有建议吗?

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

OpenSearchServer 知道两种计算构面的方法。 "Single valued method" 和 "Multivalued method".

编辑您的搜索请求并将 "Multivalued" 设置为 "yes"。

多值字段也有两种实现方式。一个使用 "TermDocs" 功能,另一个使用 "TermVectors".

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

要测试基于 TermVectors 的那个,您必须在分面字段上启用 TermVector(将其设置为是)并再次索引数据。