文本在调试器中匹配,但没有返回结果

时间:2013-11-29 02:42:43

标签: search solr

我遇到的问题是我的索引和查询完全相同,但是没有返回任何结果。对于任何长于ENGTF最大长度的单词,它似乎都失败了。这是我的架构。

<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            enablePositionIncrements="true"
            />

    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" stemEnglishPossessive="0" preserveOriginal="1" types="wdfftypes.txt" protected="protwords.txt"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="10" side="front"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
   <filter class="solr.LowerCaseFilterFactory"/>
   <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
   <filter class="solr.ASCIIFoldingFilterFactory" words="mapping-FoldToASCII.txt"/>
  </analyzer>
</fieldType>

以下是将“满意度”放入索引时分析器的屏幕截图,并将“满意度”放入查询中。

enter image description here

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

一旦明显的选择是增加nGram长度限制。您似乎意识到这个选项,并且可能同意这不是理想的选择。

另一种选择是创建第二个字段以使用nGram搜索,另一个选项是使用不带nGram的搜索。例如,您可能会看到schema.xml中的某个地方:

<field name="myCoolNGramField" type="text_en_splitting" indexed="true" stored="false"/>
<!-- make a new type, text_en_non_ngram, and use it for this new field below. -->
<field name="myCoolField" type="text_en_non_ngram" indexed="true" stored="false"/>
<copyField source="myCoolNGramField" dest="myCoolField" />