Autosuggest で solr4 を使用しています (ここでTermsComponent
説明されているように)。大文字/小文字を無視する regEx "startsWith"-search を実行しています。
<solr>/terms
?terms.fl=name
&terms=true
&terms.limit=5
&terms.regex=<term>.*
&terms.regex.flag=case_insensitive
&qt=%2Fterms
それが返すもののいくつかの例を挙げましょう:
test -> Test Listing; test lowercase
Test -> Test Listing; test lowercase
残念ながら、このソリューションは分音符号、ウムラウト、アクセントを処理できません..したがって、次の方法は機能しません。
têst -> Test Listing; test lowercase; Têst áccènt
Test -> Test Listing; test lowercase; Têst áccènt
フィールドはstring
-トークン化されたものでも試しましたtest_en
が、成功しませんでした
<field name="name" type="string" indexed="true" stored="true" required="true" />
このオートサジェストの双方向アクセント検索を有効にする最良の方法は何ですか?
編集: AnalyzerSuggester の変更:
<searchComponent class="solr.SpellCheckComponent" name="autosuggest">
<lst name="spellchecker">
<str name="name">autosuggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.AnalyzingLookupFactory</str>
<str name="storeDir">autosuggest</str>
<str name="buildOnCommit">true</str>
<str name="field">asug</str>
<str name="suggestAnalyzerFieldType">text_asug</str>
<!-- Suggester properties -->
<bool name="exactMatchFirst">true</bool>
</lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/autosuggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">autosuggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
<str>autosuggest</str>
</arr>
</requestHandler>
.
<fieldType name="text_asug" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
</fieldType>