Solr 电子邮件地址搜索 returns 0 个结果
Solr email address search returns 0 results
我正在尝试允许在 Solr 4.0 中进行部分或全部电子邮件搜索。
这是我的测试用例:
- flast@company.com
- flast
我试过了this。但是我没有得到第一种情况的确切结果,其中提供了整个电子邮件,而第二种结果(恰好是一个唯一值)没有得到任何结果,这意味着 Solr 没有查看电子邮件字段。
这是截断的架构。我一定是遗漏了一些明显的东西,但我没有看到它。
<schema name="Search" version="1.5">
<types>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_email" class="solr.TextField" sortMissingLast="true" omitNorms="true" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
</fieldType>
</types>
<fields>
.
.
.
<field name="email" type="text_email" indexed="true" stored="true"/>
.
.
.
</fields>
如下使用 wordDelimiterFilterFactory。
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
generateWordParts="1"
将有助于生成部分单词:
preserveOriginal="1"
导致原始标记在没有修改的情况下被索引。
最终类型应如下所示:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
我正在尝试允许在 Solr 4.0 中进行部分或全部电子邮件搜索。
这是我的测试用例:
- flast@company.com
- flast
我试过了this。但是我没有得到第一种情况的确切结果,其中提供了整个电子邮件,而第二种结果(恰好是一个唯一值)没有得到任何结果,这意味着 Solr 没有查看电子邮件字段。
这是截断的架构。我一定是遗漏了一些明显的东西,但我没有看到它。
<schema name="Search" version="1.5">
<types>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_email" class="solr.TextField" sortMissingLast="true" omitNorms="true" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" />
</analyzer>
</fieldType>
</types>
<fields>
.
.
.
<field name="email" type="text_email" indexed="true" stored="true"/>
.
.
.
</fields>
如下使用 wordDelimiterFilterFactory。
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
generateWordParts="1"
将有助于生成部分单词:
preserveOriginal="1"
导致原始标记在没有修改的情况下被索引。
最终类型应如下所示:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>