我的数据库有三列,我将lucene配置为索引。但是,我只能搜索其中一个。完整描述如下:
我按照这些说明配置solr以使用mysql数据:
http://digitalpbk.com/apachesolr/apache-solr-mysql-sample-data-config
我下载了jdbc驱动程序,将其放在/ example / lib中,并在/example/conf/solrconfig.xml中创建了一个新的requestHandler
。
我的数据库表items
有三列:
id
:int,primary,autoincrement key
name
:varchar(256)
description
:varchar(511)
所以,我创建了以下data-config.xml:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://SERVER/DATABASE"
user="USERNAME"
password="PASSWORD"/>
<document name="content">
<entity name="node" query="select id, name, description from items">
<field column="id" name="id" />
<field column="name" name="name" />
<field column="description" name="description" />
</entity>
</document>
</dataConfig>
接下来,我编辑/ example / solr / conf中的schema.xml,让它知道新名称:
<field name="id" type="string" indexed="true" stored="true">
<field name="name" type="string" indexed="true" stored="true">
<field name="description" type="string" indexed="true" stored="true">
我必须取消注释之前此文件中出现的id
和name
的描述,因为它们与我的描述发生冲突。
接下来,我成功导入了数据库(大约100K行)。
最后,我可以name
成功搜索,但我无法按description
或id
进行搜索。我不明白为什么会这样。任何帮助或指示将不胜感激。
答案 0 :(得分:1)
名称字段可能是要搜索的默认字段名称。因此,请确保在查询中引用字段名称。
要在description
字段中搜索,请使用查询:description:queryString
要在所有字段中搜索,请使用查询:id:queryString OR name:queryString OR description:queryString