我们有任务来按各种类型的子弹查找帖子:
posts/state
posts/city-name
posts/city-name/category
posts/city-name/category/subcategory
posts/long-title-slug
posts/category
posts/... what our seo expert want
我们将所有帖子存储在mariadb中,并根据更改将数据推送至SOLR或从中删除。在seo任务开槽时,我们需要将所有seo链接存储在SOLR中。我们每个帖子的搜索引擎优化版本数量未知。
我们需要定义字段以存储一个帖子的多个子弹变化。怎么做?
更新当前的SOLR模式
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="title" type="text" multiValued="false" indexed="true" stored="true"/>
<field name="facet_title" type="string" indexed="true" stored="true"/>
<field name="facet_title_length" type="int" indexed="true" stored="true" multiValued="false"/>
<field name="slug" type="string" indexed="true" stored="true"/>
<field name="description" type="text" indexed="true" stored="true"/>
<field name="company_name" type="string" indexed="true" stored="true"/>
<field name="logo" type="string" indexed="false" stored="true"/>
<field name="cpc" type="string" indexed="false" stored="true"/>
<field name="date" type="string" indexed="true" stored="true"/>
<field name="location" type="text" indexed="true" stored="true"/>
<field name="city" type="text" indexed="true" stored="true"/>
<field name="postalcode" type="text" indexed="true" stored="true"/>
<field name="address" type="text" indexed="true" stored="true"/>
<field name="industry" type="string" indexed="true" stored="true"/>
<field name="externalid" type="string" indexed="false" stored="true"/>
<field name="externalurl" type="string" indexed="false" stored="true"/>
<field name="premium" type="boolean" indexed="true" stored="true" default="false"/>
<field name="source" type="string" indexed="true" stored="true"/>
<field name="created" type="string" indexed="true" stored="true"/>
<field name="modified" type="string" indexed="true" stored="true"/>
<field name="hits" type="int" indexed="true" stored="true" multiValued="false"/>
答案 0 :(得分:1)
使您的slug
字段成为多值:
<field name="slug" type="string" indexed="true" stored="true" multiValued="true" />
..并在其中存储所有可能的子弹变化。如果您今天只在该字段中存储long-title-slug
,并希望保持这种方式,请添加一个新字段:
<field name="path_slug" type="string" indexed="true" stored="true" multiValued="true" />
..然后将其中的所有the的可能值都包含在数组中。
['posts/state', 'posts/city-name', ....]
确切的操作方式取决于用来向Solr提交内容的代码,但是所有Solr库都以某种方式支持此操作-通过多次调用addField
或类似方法,或者提供一个数组到addField
方法。
然后您可以使用path_slug:posts/state
对该子弹进行查询。