@usereactify/search 5.48.0-beta.0 → 5.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [5.48.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.47.1...release-v5.48.0) (2024-02-14)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* improve sharing of props between server and client, remove dead code ([01d3631](https://bitbucket.org/usereactify/reactify-search-ui/commit/01d3631589efa0203db31f6b7435152f7f147f99))
|
|
11
|
+
* normalise search value and correctly query for search curations ([75be00c](https://bitbucket.org/usereactify/reactify-search-ui/commit/75be00cfee45435be6a802a637e631e8902ae3ef))
|
|
12
|
+
|
|
5
13
|
## [5.48.0-beta.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.46.0-beta.1...beta-v5.48.0-beta.0) (2024-01-25)
|
|
6
14
|
|
|
7
15
|
|
package/dist/package.json
CHANGED
|
@@ -51,9 +51,10 @@ const SensorSearchTerm = () => {
|
|
|
51
51
|
}
|
|
52
52
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
53
53
|
react_1.default.createElement(DataSearch_1.default, { fuzziness: 1, queryFormat: "and", autosuggest: false, value: searchTermDebounced, componentId: "SensorSearchTerm", style: { display: "none" }, dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), customQuery: (value, props) => {
|
|
54
|
+
const valueNormal = value.toLowerCase().trim();
|
|
54
55
|
const conditions = [];
|
|
55
56
|
if (flagsHook.flags["reactify-search:flag_sensor_searchterm_value"] &&
|
|
56
|
-
|
|
57
|
+
valueNormal) {
|
|
57
58
|
if (options.market) {
|
|
58
59
|
conditions.push({
|
|
59
60
|
nested: {
|
|
@@ -62,23 +63,13 @@ const SensorSearchTerm = () => {
|
|
|
62
63
|
bool: {
|
|
63
64
|
must: [
|
|
64
65
|
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
query: {
|
|
68
|
-
term: {
|
|
69
|
-
"curations.searchTerm.keyword": value.toLowerCase(),
|
|
70
|
-
},
|
|
71
|
-
},
|
|
66
|
+
term: {
|
|
67
|
+
"curations.searchTerm.keyword": valueNormal,
|
|
72
68
|
},
|
|
73
69
|
},
|
|
74
70
|
{
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
query: {
|
|
78
|
-
term: {
|
|
79
|
-
"curations.markets.keyword": options.market,
|
|
80
|
-
},
|
|
81
|
-
},
|
|
71
|
+
term: {
|
|
72
|
+
"curations.markets.keyword": options.market,
|
|
82
73
|
},
|
|
83
74
|
},
|
|
84
75
|
],
|
|
@@ -93,7 +84,7 @@ const SensorSearchTerm = () => {
|
|
|
93
84
|
path: "curations",
|
|
94
85
|
query: {
|
|
95
86
|
term: {
|
|
96
|
-
"curations.searchTerm.keyword":
|
|
87
|
+
"curations.searchTerm.keyword": valueNormal,
|
|
97
88
|
},
|
|
98
89
|
},
|
|
99
90
|
},
|
|
@@ -109,7 +100,7 @@ const SensorSearchTerm = () => {
|
|
|
109
100
|
fieldsPhrase.length > 0) {
|
|
110
101
|
conditions.push({
|
|
111
102
|
multi_match: {
|
|
112
|
-
query:
|
|
103
|
+
query: valueNormal,
|
|
113
104
|
fields: fieldsPhrase,
|
|
114
105
|
type: "phrase",
|
|
115
106
|
operator: "and",
|
|
@@ -126,7 +117,7 @@ const SensorSearchTerm = () => {
|
|
|
126
117
|
fieldsPhrasePrefix.length > 0) {
|
|
127
118
|
conditions.push({
|
|
128
119
|
multi_match: {
|
|
129
|
-
query:
|
|
120
|
+
query: valueNormal,
|
|
130
121
|
fields: fieldsPhrasePrefix,
|
|
131
122
|
type: "phrase_prefix",
|
|
132
123
|
operator: "and",
|
|
@@ -142,7 +133,7 @@ const SensorSearchTerm = () => {
|
|
|
142
133
|
fieldsCrossFields.length > 0) {
|
|
143
134
|
conditions.push({
|
|
144
135
|
multi_match: {
|
|
145
|
-
query:
|
|
136
|
+
query: valueNormal,
|
|
146
137
|
fields: fieldsCrossFields,
|
|
147
138
|
type: "cross_fields",
|
|
148
139
|
operator: "and",
|
|
@@ -162,7 +153,7 @@ const SensorSearchTerm = () => {
|
|
|
162
153
|
.map((field) => ({
|
|
163
154
|
span_first: {
|
|
164
155
|
match: {
|
|
165
|
-
span_term: { [`${field}`]:
|
|
156
|
+
span_term: { [`${field}`]: valueNormal },
|
|
166
157
|
},
|
|
167
158
|
end: 1,
|
|
168
159
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport {\n useAnalytics,\n useFlags,\n useReactifySearchContext,\n useSearch,\n} from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const flagsHook = useFlags();\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] =\n React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n );\n }\n\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n );\n }\n\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"search\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n },\n {\n wait: 300,\n }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) {\n return null;\n }\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_searchterm\"]) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const conditions: Array<unknown> = [];\n\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_value\"] &&\n value\n ) {\n if (options.market) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value.toLowerCase(),\n },\n },\n },\n },\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.markets.keyword\": options.market,\n },\n },\n },\n },\n ],\n },\n },\n },\n });\n } else {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value.toLowerCase(),\n },\n },\n },\n });\n }\n }\n\n const fieldsPhrase = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_phrase\"] &&\n fieldsPhrase.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_prefix_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n )\n .filter((field: string) => !field.includes(\".\"));\n\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_prefix\"\n ] &&\n fieldsPhrasePrefix.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_cross_fields_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_cross_fields\"\n ] &&\n fieldsCrossFields.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: value,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_span_first_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: value },\n },\n end: 1,\n },\n }));\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_span_first\"\n ] &&\n fieldsSpanFirst.length > 0\n ) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SensorSearchTerm.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearchTerm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounceFn } from \"ahooks\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport {\n useAnalytics,\n useFlags,\n useReactifySearchContext,\n useSearch,\n} from \"../../hooks\";\n\nexport const SensorSearchTerm: React.FC = () => {\n const flagsHook = useFlags();\n const { options, config } = useReactifySearchContext();\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const [searchTermDebounced, setSearchTermDebounced] =\n React.useState<string>(searchTerm);\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(() => {\n if (options.mode === \"search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n );\n }\n\n if (options.mode === \"instant-search\") {\n return config.fields.filter((field) =>\n [\"always_search\", \"instant_search\"].includes(field.searchType)\n );\n }\n\n return [];\n }, [config.fields]);\n\n const { run: runDebouncedTriggerQuery, cancel: cancelDebouncedTriggerQuery } =\n useDebounceFn(\n (value: string) => {\n setSearchTermDebounced(value);\n\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"search\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n },\n {\n wait: 300,\n }\n );\n\n React.useEffect(() => {\n runDebouncedTriggerQuery(searchTerm);\n }, [searchTerm]);\n\n if (searchFields.length === 0) {\n return null;\n }\n\n if (!flagsHook.flags[\"reactify-search:flag_sensor_searchterm\"]) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchTermDebounced}\n componentId=\"SensorSearchTerm\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const valueNormal = value.toLowerCase().trim();\n const conditions: Array<unknown> = [];\n\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_value\"] &&\n valueNormal\n ) {\n if (options.market) {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n {\n term: {\n \"curations.markets.keyword\": options.market,\n },\n },\n ],\n },\n },\n },\n });\n } else {\n conditions.push({\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": valueNormal,\n },\n },\n },\n });\n }\n }\n\n const fieldsPhrase = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\"reactify-search:flag_sensor_searchterm_phrase\"] &&\n fieldsPhrase.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsPhrasePrefix = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_prefix_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n )\n .filter((field: string) => !field.includes(\".\"));\n\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_phrase_prefix\"\n ] &&\n fieldsPhrasePrefix.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsCrossFields = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_cross_fields_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .map(\n (field: string, index: number) =>\n `${field}^${props.fieldWeights[index]}`\n );\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_cross_fields\"\n ] &&\n fieldsCrossFields.length > 0\n ) {\n conditions.push({\n multi_match: {\n query: valueNormal,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n });\n }\n\n const fieldsSpanFirst: any = props.dataField\n .filter((field: string) =>\n !flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_span_first_synonyms\"\n ]\n ? !field.includes(\"synonym\")\n : true\n )\n .filter((field: string) => {\n if (field.endsWith(\".keyword\")) {\n return false;\n }\n\n return true;\n })\n .map((field: string) => ({\n span_first: {\n match: {\n span_term: { [`${field}`]: valueNormal },\n },\n end: 1,\n },\n }));\n if (\n flagsHook.flags[\n \"reactify-search:flag_sensor_searchterm_span_first\"\n ] &&\n fieldsSpanFirst.length > 0\n ) {\n conditions.push(...fieldsSpanFirst);\n }\n\n return {\n query: {\n bool: {\n should: conditions,\n minimum_should_match: \"1\",\n },\n },\n };\n }}\n />\n </>\n );\n};\n"]}
|