我在Solr引擎中索引了一些MySQL数据库的数据。当我搜索关键字和字段名称时,它工作正常:“q = texted_value:car”返回我的数据库记录
<doc><str name="id">6</str><str name="texted_value">car</str></doc>
但是,我需要能够在我的数据库中执行全文搜索,而不给出字段名称(q = car)。那我们该怎么做呢?如果在我的数据配置中包含Transformer或Processor,请指导我吗?
我的data-config.xml:
<entity name="test0"
pk="id"
query="select * from test0">
<field column="value_t" name="texted_value" />
</entity>
THX
答案 0 :(得分:2)
用于在Solr中搜索字段的常用技术是使用copyField
指令。这会将值从原始字段复制到目标字段。通常它没有规范和索引编入索引。没有存储。
<copyField source="columnA" dest="textAll" maxChars="20" />
<copyField source="columnB" dest="textAll" maxChars="20" />
<copyField source="columnC" dest="textAll" maxChars="20" />
....
将textAll
字段设为schema.xml
,
<defaultSearchField>textAll</defaultSearchField>
现在您可以搜索 http:// server / solr / select /?q = car ,这将搜索您的所有字段。这样可以提高搜索效果,而不是单独搜索每个字段,而是搜索一个字段textAll
。它带来了索引时间和价格的增加。文件大小。
答案 1 :(得分:0)
您可以使用DisMax Query Parser指定可搜索的列。 copyField
也可以使用,但需要更改架构。根据具体情况,两者都是不错的选择。
**?q = car&amp; qf = column1 column2&amp; defType = dismax
//search for the word "car" ?q=car //specify all the columns to search in &qf=column1 column2 //use dismax &defType=dismax