Как запустить SQL-запрос в Solr

Хорошо, теперь я успешно установил solr и index по базе данных со следующей структурой: DB_NAME — solr, Table — users

введите описание изображения здесь

мой файл db-data-config.xml:

<dataConfig>
<dataSource type="JdbcDataSource"driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/solr"user="root"password="" />
<document>
<entity name="users" query="select id,name from users;" />

<field column="ID" name="id" />
<field column="NAME" name="name" />

</document>
</dataConfig>

Который возвращает строки пользователей таблицы базы данных.

Проблема 1:

Но что мне делать, если я хочу выполнить поиск типа «Ракеш Шетти» и он должен вернуть результат «Ракеш Васант Шетти»?

я пытался <entity name="users" query="select id,name from users where name like '%Rakesh Shetty%' ;" /> но он возвращает пустой результат.

Проблема 2:

Кроме того, как я могу сделать этот поисковый запрос динамическим? Я имею в виду, что будет форма с текстовым полем поиска, и она должна запросить, чтобы решить? Я использую php и solr 5.1.0.

Заранее спасибо.

2

Решение

попробуйте схему ниже.

<schema name="simple" version="1.5">

<types>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" preserveOriginal="1" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>

</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>
</fieldType>


<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
</types>

<fields>

<field name='id' type='int' required='true' indexed="true" stored="true"/>
<field name='name' type='text' required='true' indexed="true" stored="true"/>


</fields>

<uniqueKey>id</uniqueKey>


<defaultSearchField>name</defaultSearchField>
<solrQueryParser defaultOperator='OR' />

</schema>
1

Другие решения

См .: SOLR DIH ИСПОЛЬЗУЯ ТАМОЖЕННЫЕ ПЕРЕМЕННЫЕ

Поэтому в основном вам нужно передать пользовательские переменные в ваш файл DIH.xml, например

http://localhost:8983/solr/{collection_name}/dataimport?command=full-import&name=Rakesh&commit=true

И в файле DIH вы можете получить доступ к этой переменной с ${dataimporter.request.name}и используйте в своем запросе DIH.

например,

 <entity name="users" query="select id,name from users where name ='${dataimporter.request.name}' ;" />

И для вашего динамический поиск ссылка ниже

http://solr.pl/en/2010/10/18/solr-and-autocomplete-part-1/введите описание ссылки здесь

0

По вопросам рекламы [email protected]