【发布时间】:2011-10-08 03:44:57
【问题描述】:
我的 Solr 搜索引擎有点问题。当我搜索“西装”一词时,它不会返回任何结果。我 100% 确定它存在包含“Suits”一词的文档。但是,我可以搜索“suit”这个词,结果包含“suits”。
我的架构:
<schema name="hello" version="1.3">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="title" type="text" indexed="true" stored="true" required="true"/>
<field name="description" type="text" indexed="true" stored="true" required="true"/>
<field name="profileMiniature" type="string" stored="true" required="true"/>
</fields>
<uniqueKey>id</uniqueKey>
<defaultSearchField>title</defaultSearchField>
</schema>
我的查询是"title:$q*^2 description:$q*"。
【问题讨论】:
-
我认为词干分析器会使这两个查询相同...尝试不使用通配符,也许?
-
你的意思是
*?已经尝试过了,它奏效了!但是如何在不使用*的情况下部分搜索单词? -
尝试使用分析页面了解其索引和搜索方式
标签: search solr full-text-search