Meilisearch - Vue instantsearch将搜索限制为一个索引

ql3eal8s  于 12个月前  发布在  Vue.js
关注(0)|答案(2)|浏览(153)

我在使用meilisearch和vue-instantsearch时遇到了一个小问题。
我有一些模型,其中有一个叫car-model,还有一个叫manufacturermanufacturercar-model的关系是1:n。
现在,manufacturer-model有一个名为founder的字段。因此,如果我以公司VW为例,我将名称Ferry Porsche添加到该Model的founder字段。
当我现在用meilisearch搜索我的indizes时,我在搜索框中输入Porsche,我得到Porsche作为manufacturers的结果,但我也得到VW,因为出于某种原因,vue-instantsearch也显示manufacturer-model的founder-属性中的点击率。
根据vue-instantsearch的文档,我可以这样限制正在搜索的属性:

<ais-index index-name="manufacturer">
            <ais-configure :attributes-to-retrieve="['manufacturer']"> <!-- <-- this should in theory limit the results to hits only in model-->
              <ais-hits>
                <template v-slot:item="{ item }">
                  <h3>
                    <ais-highlight :hit="item" attribute="name"/>
                  </h3>
                  <template v-if="item.logo">
                    <div class="hit-name__thumbnail">
                      <img :src="getImageUrl(item?.logo?.url)"
                           class="img-responsive search-box__results-manufacturer-logo"/>
                    </div>
                  </template>
                </template>
              </ais-hits>
            </ais-configure>
          </ais-index>

字符串
但是这并不起作用,我仍然得到manufacturerVWPorsche结果。这里我遗漏了什么吗?
任何帮助都将不胜感激,
Greetz DeM

t40tm48m

t40tm48m1#

根据vue-instantsearch的configure widget文档:
prop必须使用camel大小写,因为它们直接转发到Algolia API。在HTML或字符串模板中,您可以通过在prop的值之前添加.camel来实现这一点。
所以应该是:

<ais-configure :attributes-to-retrieve.camel="manufacturer"> <!-- or "['manufacturer']" -->

字符串

h79rfbju

h79rfbju2#

谢谢,@CaroFG,这并没有解决我的问题。
不过,我让它以不同的方式工作,通过直接使用meilisearch API并通过PUT请求在我的模型上设置可搜索的属性。在webstorm HTTP-Client中的解决方案看起来像这样:

PUT http://localhost:7700/indexes/car-model/settings/searchable-attributes
Content-Type: application/json

[
  "name",
  "manufacturer.name" # since name is a nested attr on the related manufacturer entity
]

字符串
德赫里茨?特里舍莫恩奇

相关问题