搜索返回的结果不相关

时间:2018-08-21 22:20:35

标签: php symfony elasticsearch ongr

我正在尝试使用ONGRFilterManagerBundle进行全文搜索。 一切都已配置并添加到项目中,但是当我对某些数据进行搜索时,我发现搜索返回的结果完全不相关。

这是我的配置:

ongr_elasticsearch:
  managers:
    default:
      index:
        hosts:
        - "%env(ELASTIC_HOST)%:%env(ELASTIC_PORT)%"
        index_name: project_search
      mappings:
      - SearchBundle

ongr_filter_manager:
  managers:
    search_list:
      filters:
      - content
      - pagination
      repository: es.manager.default.typed_content
  filters:
    content:
      type: match
      request_field: text
      document_field: content
    pagination:
      type: pager
      request_field: page
      document_field: ~
      options:
        count_per_page: 12
        max_pages: 8

这是我的文件

namespace SearchBundle\Document;

use ONGR\ElasticsearchBundle\Annotation as ES;

/**
 * @ES\Document()
 */
class TypedContent implements DocumentInterface
{
    /**
     * @ES\Id()
     * @var string
     */
    private $id;

    /**
     * @ES\Property(type="text")
     * @var string
     */
    private $content;

    /**
     * @ES\Property(type="text")
     * @var string
     */
    private $type;

    /**
     * @var mixed
     */
    private $dataObject;

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param mixed $id
     */
    public function setId($id): void
    {
        $this->id = $id;
    }

    /**
     * @return mixed
     */
    public function getContent()
    {
        return $this->content;
    }

    /**
     * @param mixed $content
     */
    public function setContent($content): void
    {
        $this->content = $content;
    }

    /**
     * @return string
     */
    public function getType(): string
    {
        return $this->type;
    }

    /**
     * @param string $type
     */
    public function setType(string $type): void
    {
        $this->type = $type;
    }

    /**
     * @return mixed
     */
    public function getDataObject()
    {
        return $this->dataObject;
    }

    /**
     * @param mixed $dataObject
     */
    public function setDataObject($dataObject): void
    {
        $this->dataObject = $dataObject;
    }
}

例如,当我搜索单词olive时,我将获得所有文档的结果集,尽管它们中没有一个单词与“ olive”非常相似,并且每个结果的得分均为“ 1”

谁能发现我的错误?

1 个答案:

答案 0 :(得分:0)

我现在知道问题出在哪里。我正在使用Symfony表单提交搜索词。在这种情况下,该字段的名称为search[text],但管理中心希望该字段的名称为text。因此,自然地,搜索将根本不会考虑搜索项。我将需要更改表格以为字段命名为text而不是search[text]