使用Solr搜索部分单词

Lin*_*der 7 solr sunspot

我正在尝试使用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文件的其余部分.

Mik*_*lov 6

您共享的查询正在搜索"title_text"字段,但您在上面发布的架构定义了"text"字段.假设这只是一个疏忽,并且title_text字段在你的帖子中被定义,我认为可能的问题是NGramTokenizer配置了minGramSize ="3",并且你期望使用单字符令牌进行匹配.

您可以尝试将minGramSize更改为1,但这将不可避免地导致一些非常低效的索引; 我想知道你是否真的热衷于在每部电影中加上"e"匹配标题中的e?