Я новичок в Solr с весной. Я использую Solr 4.6 и Spring 3.xВесна Данные Solr Как получить предложения
Я успешно настроил Solr для моего приложения Spring, и я могу выполнить поиск по этому адресу, используя код ниже.
@Query("text:*?0*")
public List<AddressDocument> findAll(String searchText);
Моя схема является
<fields>
<field name="id" type="long" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="false" stored="true" required="true" multiValued="false"/>
<field name="number" type="string" indexed="false" stored="true" required="true" multiValued="false"/>
<field name="address" type="text_general" indexed="false" stored="true" required="true" multiValued="false"/>
<field name="city" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="state" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="zipcode" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="country" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="latlng" type="string" indexed="false" stored="true" multiValued="false"/>
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
</fields>
<!-- Configure unique key -->
<uniqueKey>id</uniqueKey>
<copyField source="name" dest="text"/>
<copyField source="number" dest="text"/>
<copyField source="address" dest="text"/>
<copyField source="city" dest="text"/>
<copyField source="state" dest="text"/>
<copyField source="zipcode" dest="text"/>
<copyField source="country" dest="text"/>
Теперь я интегрировал SpellChecker и когда я ввожу неверное правописание, то он показывает мне следующий ответ в журнале.
Например, правильное название города: Fargo
, если я ввожу Frgo
, тогда он показывает меня ниже.
2014-01-30 04:09:10,903 DEBUG [http-8080-2] (DirectSolrSpellChecker.java:179) - getSuggestions: [frgo]
2014-01-30 04:09:10,940 DEBUG [http-8080-2] (SpellCheckCollator.java:180) - Collation: text:*fargo* will return 3 hits.
2014-01-30 04:09:10,941 INFO [http-8080-2] (SolrCore.java:1864) - [customer_site_address] webapp=null path=/select params={q=text%3A*frgo*&start=0&rows=0} hits=0 status=0 QTime=43
2014-01-30 04:09:10,944 DEBUG [http-8080-2] (SolrTemplate.java:326) - Executing query 'q=text%3A*frgo*&start=0&rows=1' against solr.
2014-01-30 04:09:10,951 DEBUG [http-8080-2] (DirectSolrSpellChecker.java:179) - getSuggestions: [frgo]
2014-01-30 04:09:10,959 DEBUG [http-8080-2] (SpellCheckCollator.java:180) - Collation: text:*fargo* will return 3 hits.
2014-01-30 04:09:10,960 INFO [http-8080-2] (SolrCore.java:1864) - [customer_site_address] webapp=null path=/select params={q=text%3A*frgo*&start=0&rows=1} hits=0 status=0 QTime=15
2014-01-30 04:09:10,961 DEBUG [http-8080-2] (AbstractMessageConverterMethodProcessor.java:150) - Written [[]] as "application/json;charset=UTF-8" using [org.springf[email protected]1fb032d]
Как вы можете видеть в журнале это предложить правильное слово, но я понятия не имею, как я могу получить эти предложения, используя @Query
или любые другие аннотации.
Я сделал много google, но не нашел идеального решения.
Пожалуйста, поделитесь своими соображениями с правом голоса –