[英]Solr phrase search needs to match on partial word
使用Solr來搜索英語和韓語文檔,到目前為止,韓語搜索工作正常。 也需要擴展英語精確短語以與部分單詞匹配。
我使用的Solr查詢:
content: "He go"
與他去,他去,他的目標等不匹配
我嘗試過這些但沒有用
content: "He go"*
content: "He go*"
當前字段架構
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CJKBigramFilterFactory" han="false" hiragana="false" katakana="false" hangul="true" outputUnigrams="true" />
</analyzer>
</fieldType>
因此,我的輸入和預期輸出如下:
輸入:他去(帶引號)
輸出:他走了,他走了,他的目標(應與具有這些詞的文檔匹配,可以是部分匹配)
我如何實現此功能,任何建議都將受到高度贊賞。
如果<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
單詞的一部分進行搜索,則需要應用,例如N-Gram Tokenizer, <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
例如。
在: "bicycle"
輸出: "bicy", "bicyc", "icyc", "icycl", "cycl", "cycle", "ycle"
在這種情況下,您將可以按詞的一部分進行搜索。 您需要為兩個分析器都應用NGramTokenizerFactory:
<fieldType name="custome_field_type" class="solr.TextField" positionIncrementGap="100" multiValued="false">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
如果您使用上述字段類型,則在管理工具上進行的分析如下。
您也可以嘗試以下查詢分析器。 這完全取決於您的要求。
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
您可以在schema.xml
修改或添加字段類型,並將其應用於您的字段。 完成重啟服務器后,重新索引數據。 如果數據使用solr admin工具匹配,則可以驗證字段的上述fieldType。
我使用了以下字段類型,並使用solr工具進行了分析。
這是字段類型:
<fieldType name="custome_field_type" class="solr.TextField" positionIncrementGap="100" multiValued="false">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
請從solr管理工具中找到相同的分析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.