Elasticsearch и symfony ищут часть слова

Я совсем новичок в Elastic Search, может быть, вы можете мне помочь:

Итак, у меня есть Symfony и Elasticsearch (FOSElasticaBundle).

Если я ищу полное слово в заголовке — все работает (например, если я наберу «привет», я получу результаты там, где мир «привет»).

Но проблема в том, что я хочу найти часть слова
тоже, например, если я наберу «hel», я хочу получить результат, где «hel»
часть слова.

мой config.yml

fos_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
app:
client: default
settings:
index:
analysis:
analyzer:
custom_search_analyzer:
type: custom
tokenizer: standard
filter   : [standard, lowercase, asciifolding]
custom_index_analyzer:
type: custom
tokenizer: standard
filter   : [standard, lowercase, asciifolding, custom_filter]
filter:
custom_filter:
type: edgeNGram
side: front
min_gram: 1
max_gram: 20
types:
book:
mappings:
Author:
isbn:
title: { analyzer: custom_search_analyzer, analyzer: custom_index_analyzer, filter: custom_filter, type: string }
persistence:
driver: orm
model: VienasVienas\Bundle\BooksBundle\Entity\Book
provider:
listener:
finder:

моя функция php

public function indexAction(Request $request)
{
$finder = $this->get('fos_elastica.finder.app.book');
$searchTerm = $request->query->get('q');

$searchQuery = new \Elastica\Query\QueryString();
$searchQuery->setParam('query', $searchTerm);
$searchQuery->setDefaultOperator('AND');

$books = $finder->find($searchQuery);
return array(
'entities' => $books
);
}

Кто-нибудь может помочь?

0

Решение

Поэтому я просто забываю добавить setParam для полей …

    $searchQuery->setParam('fields', array(
'Author',
'title',
'isbn',
));

Теперь все работает!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]