我正在尝试使用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”
谁能发现我的错误?
答案 0 :(得分:0)
我现在知道问题出在哪里。我正在使用Symfony表单提交搜索词。在这种情况下,该字段的名称为search[text]
,但管理中心希望该字段的名称为text
。因此,自然地,搜索将根本不会考虑搜索项。我将需要更改表格以为字段命名为text
而不是search[text]