Ich habe Probleme mit zwei ähnlichen Anwendungsfällen.Solr-Index für verkettete Wörter suchen
Hier ist ein Beispiel-Dokument aus meinem Index:
{
"id":"E850AC8D844010AFA76203B390DD3135",
"brand_txt_en":"Tom Ford",
"catch_all":["Tom Ford",
"FT 5163",
"Tom Ford",
"FT 5163",
"DARK HAVANA"],
"model_txt_en":"FT 5163",
"brand_txt_en_split":"Tom Ford",
"model_txt_en_split":"FT 5163",
"color_txt_en":"DARK HAVANA",
"material_s":"acetato",
"gender_s":"uomo",
"shape_s":"Wayfarer",
"lens_s":"cerchiata",
"modelkey_s":"86_1_FT 5163",
"sales_i":0,
"brand_s":"Tom Ford",
"model_s":"FT 5163",
"color_s":"DARK HAVANA",
"_version_":1569456572504997895
}
Abfrage: brand_txt_en_split: tomford
Keine Ergebnisse!
Feldtyp ist standardmäßig die Solr ein:
<fieldType name="text_en_splitting" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="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" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.WordDelimiterFilterFactory" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
Ich erwarte WordDelimiterFilterFactory „tomford“ Token durch Verketten Wörter zu erzeugen, aber es sieht aus wie das ist nicht wie erwartet funktioniert.
Die 'inverse' Anwendungsfall ist:
{
... "model_txt_en_split": "The Clubmaster", ...
}
Ich möchte, daß das Dokument nach dieser Abfrage gefunden werden: Club Master
Ich glaube, ich EdgeNGram Filter für den letzteren Fall verwendet werden soll , aber wirklich nicht, wie man das macht.
Danke für Ihre Hilfe
Danke. Leider ist das keine Antwort auf meine Frage. Ich meine: Wie kann ich ein Token, das durch Verkettung aller anderen Token erstellt wurde, genau hinzufügen? In Ihrem Beispiel: "hot spot sensor s" -> "hotspotsensor" –
Ich habe die Antwort aktualisiert. Versuchen Sie es mit der PatternReplaceFilterFactory. Sobald Sie die schema.xml hinzufügen/aktualisieren. Starten Sie den Server neu und indizieren Sie die Daten neu. –
Ich habe wieder update bitte überprüfen Sie, ob es Ihnen hilft. –