How to search only inside one string of a Collection in Azure Search?

試著忘記壹切 提交于 2019-12-24 21:00:00

问题


I've a collection fields like:

["city of god"]
["god of war", "city of war"]

I want to perform a search on the field with 'city' AND 'god' and I want only 'city of god' to be returned.

Yet, the second field is also return regardless of the terms being in two different strings within the collection.

Anyway to make the search strict to within strings and not to the entire collection?


回答1:


Each searchable field in the index is treated as a bag of terms, so for “city AND god” you’re matching on all terms of that field in the whole document, not only the terms within sub-documents (in this case individual strings in the collection).

One way to get around this would be to specify a reasonable estimate of distance between these terms within a single string of a collection and use that to issue a proximity search query to get the desired result. For your specific example, assuming that the terms would be within 5 words of each other, the following query should work -

                 &queryType=full&search=fieldName:"city god"~5

Using proximity search is really useful as it helps that words don’t have to be in the provided order in the phrase query with large enough proximity value e.g., “city god”~5 would also match “god bless the city”.

Make sure to include queryType=full in your query string as proximity search is part of the full query syntax and would not work otherwise. You can check some other examples here.



来源:https://stackoverflow.com/questions/48606944/how-to-search-only-inside-one-string-of-a-collection-in-azure-search

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!