Lucene クエリ構文では、* と ~ を次のような有効なクエリに結合したいと思います: bla~* //invalid query
意味:「bla」または「bla」に似たもので始まる単語を一致させてください。
更新:私が今行っていることは、小さな入力で機能し、次を使用することです(SOLRスキーマのスニペット):
<fieldtype name="text_ngrams" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
SOLR を使用しない場合、これは次のことを行います。
Indextime : 私の (短い) 入力のすべてのプレフィックスを含むフィールドを作成して、データにインデックスを付けます。
Searchtime : プレフィックスはインデックスに明示的に存在するため、~ 演算子のみを使用します。