我正在尝试使用Solr搜索一个部分单词,但我无法让它工作.
我在我的schema.xml
文件中使用它.
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
搜索die h
将无效,但会die hard
返回一些结果.添加上述配置后,我重新编制了数据库索引.
这是搜索时的网址和输出die hard
.调试器已打开.
这是搜索时的网址和输出die h
.调试器已打开.
我正在使用Solr 3.3.这是schema.xml
文件的其余部分.
您共享的查询正在搜索"title_text"字段,但您在上面发布的架构定义了"text"字段.假设这只是一个疏忽,并且title_text字段在你的帖子中被定义,我认为可能的问题是NGramTokenizer配置了minGramSize ="3",并且你期望使用单字符令牌进行匹配.
您可以尝试将minGramSize更改为1,但这将不可避免地导致一些非常低效的索引; 我想知道你是否真的热衷于在每部电影中加上"e"匹配标题中的e?
归档时间: |
|
查看次数: |
4695 次 |
最近记录: |