Я пытаюсь получить работу полнотекстового поиска с 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» для каждого результата.
Кто может обнаружить мою ошибку?
Теперь я знаю, в чем проблема. Я использую форму Symfony для отправки поисковых запросов. В этом случае имя поля search[text]
но менеджер ожидает, что поле будет иметь имя text
, Поэтому, естественно, поиск просто не будет учитывать поисковый запрос. Мне нужно будет изменить форму, чтобы дать полю имя text
вместо search[text]
Других решений пока нет …