検索とWordDelimiterGraphFilterFactory
(The bot translated the original post https://lists.apache.org/thread/mj9cprosssy73stn6gx4lw8kfyop57mn into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちは、
私は、プロジェクトID用の自動提案フィールドを作成しようとしています。ngramsとWordDelimiterGraphFilterFactoryを使用して、単語の番号の境界で分割します。
IDには、nihr123456、12/34/567、DRF-2018-11-ST2-062など、さまざまな形式があります。
私がやろうとしていることは、ユーザーが数字部分、アルファベットの文字、または両方を入力して、すべてを一致させることを許可することです。基本的な自動提案は機能していますが、クエリがすべての構成要素の一部に一致するがすべてに一致しない問題があります。例えば:
DRF-2018-11と入力すると、以下が一致します:
DRF-2018-11-ST2-062
PB-PG-0909-20188
CS-2018-18-ST2-005
最初のものは正しいですが、DRF、2018、および11が一致します。2番目と3番目のものは望みません。IDにはDRFや11が含まれていません。この問題をSolrの設定で解決する方法はありますか、それともコードでIDを手動で分割し、IDがDRF AND idが2018 AND idが11であるクエリを構築する必要がありますか?
以下が私のフィールドタイプの構成です:
<fieldType name="ngram_award_id" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.FlattenGraphFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="7"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
ありがとうございます
Shaun
トピックへ返信するには、ログインが必要です。