如何在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。

提前致谢。

相关文章

猜你在找的编程问答相关文章

怎样才能让 Git“忘记”一个被跟踪但现在在 .gitignore 中的文件?
Python 中的metaclasses是什么?
如何在 Linux 上查找包含特定文本的所有文件?
如何从异步调用返回响应
如何在一个表达式中合并两个字典(取字典的并集)?
HTTP 中的 POST 和 PUT 有什么区别?
使用 Git 将最近的提交移动到新分支
在 JavaScript 比较中应该使用哪个等于运算符 (== vs ===)?