Reputation: 71
I am doing parent-child mode, but when i deploy, vespa warn lots of my fields about "This may lead to recall and ranking issues."
finally I found that, i easy the problem to just one sd file
search vp001 {
document vp001 {
field saleno type string {
indexing: attribute | summary
attribute: fast-search
}
field salename type string {
indexing: attribute | summary
attribute: fast-search
}
}
fieldset default {
fields: saleno, salename
}
}
if I change saleno type from string to int, vespa will warning me again
Uploading application package ... done
Success: Deployed myproject
WARNING For schema 'vp001', field 'saleno': The matching settings for the fields in fieldset 'default' are inconsistent (explicitly or because of field type). This may lead to recall and ranking issues.
WARNING For schema 'vp001', field 'saleno': The normalization settings for the fields in fieldset 'default' are inconsistent (explicitly or because of field type). This may lead to recall and ranking issues.
WARNING For schema 'vp001', field 'saleno': The stemming settings for the fields in the fieldset 'default' are inconsistent (explicitly or because of field type). This may lead to recall and ranking issues.
Why ? Do I need to make sure all fileds in filedset to be the same type ? And I found that I cannot mixed "index" and "attribute" filed in fieldset, if i do so, the warning will appear too.
If not the same type, the warning appear, what ranking issues will happen ?
Upvotes: 1
Views: 143
Reputation: 2339
Yes, you see this warning whenever you put fields with different kinds of tokenization in the same fieldset. This is because a given piece of text searching one fieldset is tokenized just once, so there's no right choice of tokenization in this case.
Attributes and text indexes are tokenized differently (exact match vs. tokenized match), so you'll see this then.
In most cases you know whether a given text should match an unstructured text field (a string index field), or some structured data, so doing this is just an error. Otherwise, you need to use query expansion instead of a fieldset: Expand the query to search these fields separately, either on the client side, or in a Searcher component.
Upvotes: 3