2

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

我正在为用户编制索引,并且用户有标签。我的数据库中目前有 2 个用户,他们被标记了 5 个不同的标签。但是,如果我运行返回两个用户的搜索,则仅返回 2 个不同的标签作为构面(应该有 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)

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

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

4

1 回答 1

0

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

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

在此处输入图像描述

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

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

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

于 2016-03-30T21:28:06.670 回答