如何在Solr中运行SQL查询

问题描述

请尝试以下方案。

<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和i​​ndex: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:

但是,如果我想像“ Rakesh Shetty”那样进行搜索并且应该返回结果“ Rakesh Vasant Shetty”,该怎么办?

我已经尝试过,<entity name="users" query="select id,name from users where name like '%Rakesh Shetty%' ;" />但是返回空结果。

问题2:

另外,如何使该搜索查询动态化?我的意思是会有一个带有搜索文本框的表单,它应该查询到solr吗?我正在使用php和solr 5.1.0。

提前致谢。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...