使用lucene配置mysql时无法通过某些列进行搜索

时间:2011-07-10 18:35:04

标签: mysql lucene solr

我的数据库有三列,我将lucene配置为索引。但是,我只能搜索其中一个。完整描述如下:

我按照这些说明配置solr以使用mysql数据:

http://digitalpbk.com/apachesolr/apache-solr-mysql-sample-data-config

我下载了jdbc驱动程序,将其放在/ example / lib中,并在/example/conf/solrconfig.xml中创建了一个新的requestHandler

我的数据库表items有三列:

  1. id:int,primary,autoincrement key

  2. name:varchar(256)

  3. description:varchar(511)

  4. 所以,我创建了以下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"> 
    

    我必须取消注释之前此文件中出现的idname的描述,因为它们与我的描述发生冲突。

    接下来,我成功导入了数据库(大约100K行)。

    最后,我可以name成功搜索,但我无法按descriptionid进行搜索。我不明白为什么会这样。任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:1)

名称字段可能是要搜索的默认字段名称。因此,请确保在查询中引用字段名称。

要在description字段中搜索,请使用查询:description:queryString
要在所有字段中搜索,请使用查询:id:queryString OR name:queryString OR description:queryString

有关详细信息,请查看http://wiki.apache.org/solr/SolrRelevancyFAQ