solrconfig.xmlで、
以下のように検索コンポーネントを追加しました。
<searchComponent class="solr.SuggestComponent" name="suggest">
<lst name="suggester">
<str name="name">suggest</str>
<str name="lookupImpl">FSTLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggestions</str> //indexed field of type textspell
<str name="weightField">price</str><!--
<float name="threshold">0.005</float> -->
<str name="buildOnCommit">true</str>
<str name="suggestAnalyzerFieldType">string</str>
</lst>
</searchComponent>
次に、以下のように提案を処理するリクエスト ハンドラーを追加しました。
<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">suggest</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr></requestHandler>
schema.xmlに asfield
という名前の を追加しました。suggestions
<field name="suggestions" type="textSpell" indexed="true" stored="false" multiValued="true" />
としてfield type
textSpell
定義された、
<fieldType class="solr.TextField" name="textSpell" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer></fieldType>
クエリ時にrestarting
特定reindexing
のcore
名前を付けた後、libshelf
http://localhost:8983/solr/libshelf/suggest?suggest=true&suggest.build=true&suggest.dictionary=suggest&wt=json&suggest.q=c
結果は、
{
"responseHeader": {
"status": 0,
"QTime": 32
},
"command": "build",
"suggest": {
"suggest": {
"c": {
"numFound": 0,
"suggestions": []
}
}
}}
さらに、 for の提案はフィールドとにdicionaries
基づいているため、以下のように に 2 つを作成しました。indexed
pagecontent
pagetitle
copyfields
seed
suggesters
<copyField source="pagecontent" dest="suggestions"/>
<copyField source="pagetitle" dest="suggestions"/>
この問題を解決するにはどうすればよいですか?