1

Spring Data Solr を使用して、場所のデータベースにインデックスを付けました。次のフィールドがあります。

   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="name" type="text_ws" indexed="true" stored="true"/>
   <field name="autocomplete" type="lowercase" indexed="true" stored="false"/>

オートコンプリート機能を実装しようとしています。私の ajax 呼び出しは、次のリポジトリを呼び出すコントローラーによって処理されます。

List<POISearch> findByAutocompleteStartingWith(String autocomplete, Pageable pageable);

これは、「カリフォルニア」や「ロス」などの検索でうまく機能します。しかし、「Los Ang」のような複数の単語を試してみると、例外が発生します。

SEVERE: サーブレット [spring-mvc] の Servlet.service() がパス [/xxx] のコンテキストで例外をスローしました [リクエストの処理に失敗しました。ネストされた例外は org.springframework.dao.InvalidDataAccessApiUsageException: Cannot constructQuery ' "los an" ' です。代わりに epxression または複数の句を使用してください'。代わりに epxression または複数の句を使用してください。org.springframework.data.solr.core.query.Criteria.assertNoBlankInWildcardedQuery(Criteria.java:596) で org.springframework.data.solr.core.query.Criteria.contains(Criteria.java:230) で org.springframework .data.solr.core.query.Criteria.contains(Criteria.java:257) at org.springframework.data.solr.core.query.Criteria.contains(Criteria.java:244) at org.springframework.data.solr .repository.query.SolrQueryCreator.from(SolrQueryCreator.java:112) at org.springframework.data.solr.repository.query.SolrQueryCreator.create(SolrQueryCreator.java:56) at org.springframework.data.solr.repository.query .SolrQueryCreator.create(SolrQueryCreator.java:43) at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:

解決方法はありますか?

4

2 に答える 2

0

通常、フレーズに対してワイルドカード クエリを実行することはできません。これがここで発生しているように見えます。

の実装についてはわかりませんが、 、またはそのようなものをfindByAutocompleteStartingWith構築しているだけのPrefixQueryようです。この例外はアサーションによってスローされるため、1 単語のクエリに対して 1 単語を提案するためだけに非常に明示的に設計されています。

そのため、1 つの単語しか渡すことができません。通常、最後に入力された単語。

于 2013-05-08T15:43:01.090 に答える