私はWebアプリケーションを開発しており、Solrを検索エンジンとして使用しています。オートコンプリート機能を追加したいと思います。これを行うために、Suggesterコンポーネントを追加し、それに対して別のフィールドを設定しました。これは正常に動作します。Solr Suggesterからシングルワードを返す
問題は、Suggesterがフィールドの値全体を返すことです。たとえば、記事の名前が「ニュース価値のある商品」で、「新規」を検索すると、「ニュース価値の高い商品」全体が返されます。「ニュース価値の高い商品」を返すことができます。言い換えれば、個々の単語トークンを返します。
スキーマは次のようになります。
<fieldType name="text_autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="term" type="text_autocomplete" indexed="true" stored="true" multiValued="false" />
<field name="weight" type="float" indexed="true" stored="true" />
<copyField source="name" dest="term"/>
値は、「用語」フィールドにコピーされます。 The Solr config:
<!-- Search component -->
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggester</str>
<str name="lookupImpl">AnalyzingLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">term</str>
<str name="weightField">weight</str>
<str name="suggestAnalyzerFieldType">text_autocomplete</str>
<str name="buildOnStartup">false</str>
</lst>
</searchComponent>
<!-- Search handler -->
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">suggester</str>
<str name="suggest.build">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
Suggesterが単一の単語を返すようにするスキーマおよび/または構成をお勧めする人はいますか?
これはすばらしい、ありがとう! – Knut