Solr:搜索包含连字符的字段

Adi*_*pra 1 solr solrj spring-data-solr

我正在使用 spring-data-solr(version = 1.4.0.RELEASE) 搜索包含连字符但得到零结果的字段。我的索引字段之一包含“沃尔玛”的值,当我搜索“wal”时,它给出了正确的结果,但在搜索“wal-”时,我得到的结果为零。我之前尝试添加转义反斜杠字符 - 但它没有帮助。有人可以请告知这里可能是什么问题吗?

下面是我的 schema.xml 的快照。

            <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <!-- Case insensitive stop word removal.
    -->
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            />
    <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.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            />
    <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>
Run Code Online (Sandbox Code Playgroud)

Jam*_*gyu 5

将preserveOriginal="1" 参数添加到索引和查询分析器上的WordDelimiterFilterFactory。目前 generateWordParts 将使您与 Wal-Mart 的 Wal and Mart 保持一致。preserveOriginal 将添加原始词 Wal-Mart 进行搜索。