0

我正在尝试使用 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我将获得所有文档的结果集,尽管它们都不包含与“橄榄”非常相似的单词,并且每个结果的得分都是“1”。

谁能看出我的错误?

4

1 回答 1

0

我现在知道问题是什么了。我正在使用 Symfony 表单来提交搜索词。在这种情况下,该字段的名称是,search[text]但经理期望该字段是名称text。因此,搜索自然不会将搜索项考虑在内。我将需要更改表单以给字段命名text而不是search[text]

于 2018-08-27T08:23:37.770 回答