Wie finde ich in Solr Dokumente, die Ziffern und Dollarzeichen enthalten?

In Solr habe ich Text, der 30 und 30 US-Dollar enthält.

Ich möchte nach 30 US-Dollar suchen und finde nur Dokumente, die 30 US-Dollar enthalten.

Wenn jemand nach 30 sucht, sollte er sowohl Dokumente mit 30 USD als auch solche mit 30 USD finden.

Hier ist der Feldtyp, mit dem ich derzeit mein Textfeld indiziere:

<!-- Just like text_en_splitting, but with the addition of reversed tokens for leading wildcard matches -->
<fieldType name="text_en_splitting_reversed" 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.
      add enablePositionIncrements=true in both the index and query
      analyzers to leave a 'gap' for more accurate phrase queries.
    -->
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" types="word-delim-types.txt" />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
       maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
 </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"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"  types="word-delim-types.txt" />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>

Ich habe word-delim-types.txt so definiert, dass es Folgendes enthält:

$ => DIGIT
% => DIGIT
. => DIGIT

Wenn ich also nach 30 US-Dollar suche, werden Dokumente, die "30 US-Dollar" enthalten, korrekt gesucht, nicht jedoch solche, die nur "30" enthalten. Das ist gut. Bei der Suche nach "30" werden jedoch keine Dokumente gefunden, die "30 $5$quot; enthalten, sondern nur solche, die "30" enthalten.

Gibt es eine Möglichkeit, dies zu tun?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage