如何在Solr中运行SQL查询 [英] How to run a sql query in solr
问题描述
好吧,现在我已经成功按照以下结构通过数据库安装了solr和索引:DB_NAME-solr,表-users
Ok now I have successfully install solr and index by database with following structure : DB_NAME - solr, Table - users
我的db-data-config.xml文件:
my db-data-config.xml file :
<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>
返回数据库表用户的行.
Which returns rows of database table users.
问题1:
但是,如果我想像"Rakesh Shetty"那样搜索并且应该返回结果"Rakesh Vasant Shetty",该怎么办?
But what should I do if I want to search like 'Rakesh Shetty' and it should return result "Rakesh Vasant Shetty" ?
我尝试过<entity name="users" query="select id,name from users where name like '%Rakesh Shetty%' ;" />
,但返回空结果.
I have tried <entity name="users" query="select id,name from users where name like '%Rakesh Shetty%' ;" />
but it returns empty result.
问题2:
此外,如何使该搜索查询动态化?我的意思是将有一个带有搜索文本框的表单,它应该查询到solr?我正在使用php和solr 5.1.0.
Also, how can I make this search query dynamic ? I mean there will be a form with search textbox and it should query to solr ? I am using php and solr 5.1.0.
谢谢.
推荐答案
尝试以下模式.
<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>
这篇关于如何在Solr中运行SQL查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!