2016-11-08 46 views
0

這個問題Solr的通配符查詢是這樣的:Solr wildcard query with whitespace 我有一個通配符查詢,看起來像:與空白和同義詞

q=location:los a*

我想它匹配「洛杉磯」和「洛杉磯altos「。查詢,如:

q=location:los\ a*

工作正常,但如果我有一個同義詞邏輯:(synonym.txt)

los,las

並使用 「洛L *」,以配合「拉斯路「看起來不行,我該怎麼辦?

文件類型和文件配置:

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="0" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="0" catenateAll="0" splitOnNumerics="0" preserveOriginal="1"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonym.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="0" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnNumerics="0" preserveOriginal="1"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>

<field name="location" type="ngram" indexed="true" stored="false"/>

回答

0

好像這是一個版本的問題。我在我的項目中使用Solr 4.0,但是當我將Solr版本升級到5.4.1時,同義詞邏輯工作正常。

我還沒有更改查詢分析器。這是爲了特殊要求。

0

你以前solr.SynonymFilterFactory索引不是查詢分析器所以

當你搜索"los l*"它看起來方面開始與洛杉磯不是「las」。 使用分析查詢

此行添加到您的查詢分析器

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 

希望這個作品