Elastica FOSElastica Symfony2分析仪不工作
我正在研究Elastica/FOSElastica的工作原理。我让它运行得很好,就像非常简单的搜索查询,其中产品名称与我的搜索字符串完全匹配 因为这不是一个好的搜索方法,所以我必须添加分析器来执行更好的搜索结果。但是他们没有工作 我试图复制并粘贴这个示例代码(插入我的索引/当然类型)=> 所以,我的问题是:如何让我的分析器工作?我想,我必须在我的控制器中应用它们,但我不完全确定我将如何做到这一点 这是我的配置Elastica FOSElastica Symfony2分析仪不工作,symfony,analyzer,elastica,foselasticabundle,Symfony,Analyzer,Elastica,Foselasticabundle,我正在研究Elastica/FOSElastica的工作原理。我让它运行得很好,就像非常简单的搜索查询,其中产品名称与我的搜索字符串完全匹配 因为这不是一个好的搜索方法,所以我必须添加分析器来执行更好的搜索结果。但是他们没有工作 我试图复制并粘贴这个示例代码(插入我的索引/当然类型)=> 所以,我的问题是:如何让我的分析器工作?我想,我必须在我的控制器中应用它们,但我不完全确定我将如何做到这一点 这是我的配置 #app/config/config.yml fos_elastica: cli
#app/config/config.yml
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
search:
client: default
settings:
index:
analysis:
analyzer:
custom_analyzer :
type : custom
tokenizer: nGram
filter : [stopwords, asciifolding ,lowercase, snowball, elision, worddelimiter]
custom_search_analyzer :
type : custom
tokenizer: standard
filter : [stopwords, asciifolding ,lowercase, snowball, elision, worddelimiter]
my_analyzer _:
type: snowball
language: German
tokenizer:
nGram:
type: nGram
min_gram: 2
max_gram: 20
filter:
snowball:
type: snowball
language: German
elision:
type: elision
articles: [l, m, t, qu, n, s, j, d]
stopwords:
type: stop
stopwords: [_german_]
ignore_case : true
worddelimiter :
type: word_delimiter
types:
article :
mappings:
articleNumber:
shortName: [ boost: 6, analyzer : custom_analyzer, custom_search_analyzer, my_analyzer]
shortDescription:
index_analyzer : custom_analyzer
search_analyzer : custom_search_analyzer
longDescription:
index_analyzer : custom_analyzer
search_analyzer : custom_search_analyzer
persistence:
driver: orm
model: IndexBundle\Entity\Articles
finder: ~
provider: ~
listener: ~
这是我的控制器:
$query = new \Elastica\Query\Match();
$query->setFieldQuery(‘shortName’, $searchTerm);
$query->setFieldFuzziness(‘shortName’, 0.7);
$query->setFieldMinimumShouldMatch(‘shortName’, ’80%’);
$boolQuery = new \Elastica\Query\Bool();
$boolQuery->addMust($query);
$baseQuery = $query;
$filtered = new \Elastica\Query\Filtered($baseQuery);
$query = \Elastica\Query::create($filtered);
$articles = $finder->find($query);