我正在尝试使用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 SearchBundleDocument;
use ONGRElasticsearchBundleAnnotation as ES;
/**
* @ESDocument()
*/
class TypedContent implements DocumentInterface
{
/**
* @ESId()
* @var string
*/
private $id;
/**
* @ESProperty(type="text")
* @var string
*/
private $content;
/**
* @ESProperty(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]