0

我在我的 Solr 引擎中索引了 MySQL 数据库的一些数据。当我搜索关键字和字段名称时,它工作正常:“q=texted_value:car”返回我的数据库记录

<doc><str name="id">6</str><str name="texted_value">car</str></doc>

但是,我需要能够在我的数据库中执行全文搜索,而无需提供字段名 (q=car)。那么我们该怎么做呢?如果它在我的数据配置中包含变压器或处理器,请您指导我吗?

我的 data-config.xml :

<entity name="test0" 
pk="id"
query="select * from test0">
<field column="value_t" name="texted_value" />
</entity>

谢谢

4

2 回答 2

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。它以增加索引时间和文件大小为代价。

读取Solr 复制字段

于 2012-01-27T19:25:48.330 回答
0

您可以使用DisMax Query Parser指定可搜索的列。 copyField也可以工作,但需要更改架构。两者都是不错的选择,视情况而定。

**?q=car&qf=column1 column2&defType=dismax

    //search for the word "car"
    ?q=car

    //specify all the columns to search in
    &qf=column1 column2

    //use dismax
    &defType=dismax
于 2012-01-27T22:46:02.060 回答