Поиск возвращает слишком нерелевантные результаты

Я пытаюсь получить работу полнотекстового поиска с 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" для каждого результата.

Кто может обнаружить мою ошибку?

1 ответ

Теперь я знаю, в чем проблема. Я использую форму Symfony для отправки поисковых запросов. В этом случае имя поля search[text] но менеджер ожидает, что поле будет иметь имя text, Поэтому, естественно, поиск просто не будет учитывать поисковый запрос. Мне нужно будет изменить форму, чтобы дать полю имя text вместо search[text]

Другие вопросы по тегам