2016-11-08 47 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"/> 

希望这个作品