Skip to content

Commit 03cf2c4

Browse files
improved quiries adeed
1 parent 1d3197e commit 03cf2c4

File tree

6 files changed

+260
-40
lines changed

6 files changed

+260
-40
lines changed

src/AutoSuggest.js

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import ListIndex from './ListIndex'
55
import axios from 'axios'
66
import {suggestionsUrl, searchUrl} from './url'
77
import {suggest} from './suggest'
8+
import {generateSuggestionQuery} from './suggestionsQuery'
9+
import {generateSearchQuery} from './searchQuery'
810

911
// input value for every given suggestion.
1012
const getSuggestionValue = suggestion => suggestion;
@@ -16,17 +18,34 @@ const renderSuggestion = suggestion => (
1618
</div>
1719
);
1820

19-
var suggestionJson = {
20-
"query":{
21-
"match": {
22-
"tags.edgengram": "pla"
23-
}
24-
}
25-
}
21+
// var suggestionJson = {
22+
// "query":{
23+
// "match": {
24+
// "tags.edgengram": "pla"
25+
// }
26+
// }
27+
// }
28+
29+
// var searchQuery = {
30+
// "query": {
31+
// "multi_match": {
32+
// "query":"movies",
33+
// "fields":["ParameterValueForSearch.ngram","NodeTitle.ngram","NodeName.ngram"]
34+
// }
35+
// },
36+
// "highlight" : {
37+
// "fields" : {
38+
// "ParameterValueForSearch.ngram" : {},
39+
// "NodeTitle.ngram" : {},
40+
// "NodeName.ngram": {}
41+
// }
42+
// }
43+
// }
2644

2745
const getSuggestionOnSearch = value => {
28-
const suggestion = {...suggestionJson}
29-
suggestion.query.match["tags.edgengram"] = value
46+
const suggestion = generateSuggestionQuery(value)
47+
// suggestion.query.match["tags.edgengram"] = value
48+
// suggestionJson = suggestion
3049
return suggestion
3150
}
3251

@@ -78,8 +97,9 @@ class AutoSuggest extends React.Component {
7897
this.setState({searchValue: value})
7998
var suggestion = null //getSuggestionOnSearch(value)
8099
value.length >= 1 ? suggestion = getSuggestionOnSearch(value) : null
100+
console.log("suggestion", suggestion)
81101
if (suggestion !== null) {
82-
axios.post(suggestionsUrl, suggestionJson)
102+
axios.post(suggestionsUrl, suggestion)
83103
.then((response)=>{
84104
if (response.data.hits.length === 0 ) return
85105
var data = renderDataNew(response.data)
@@ -104,34 +124,16 @@ class AutoSuggest extends React.Component {
104124

105125
onSubmit = (event) => {
106126
// api call to get final suggestions
107-
var searchQuery = {
108-
"query": {
109-
"multi_match": {
110-
"query":"movies",
111-
"fields":["ParameterValueForSearch.ngram","NodeTitle.ngram","NodeName.ngram"]
112-
}
113-
},
114-
"highlight" : {
115-
"fields" : {
116-
"ParameterValueForSearch.ngram" : {},
117-
"NodeTitle.ngram" : {},
118-
"NodeName.ngram": {}
119-
}
120-
}
121-
}
122-
searchQuery.query.multi_match.query = this.state.value
123-
// console.log(searchQuery)
127+
const searchQuery = generateSearchQuery(this.state.value)
128+
console.log("searchQuery", searchQuery)
124129
axios.post(searchUrl, searchQuery )
125130
.then((response)=>{
126-
// console.log(response.data.hits)
131+
console.log(response.data)
127132
const searchResult = response.data
128133
this.setState({searchResult, showResults: true})
129134
})
130135
event ? event.preventDefault() : null
131136
}
132-
onSuggestionHighlighted = (suggestion) => {
133-
// console.log(suggestion)
134-
}
135137

136138
searchSuggestedValue = (value) => {
137139
console.log(value)
@@ -140,7 +142,7 @@ class AutoSuggest extends React.Component {
140142
}
141143

142144
render() {
143-
const { value, suggestions, searchValue, responseSuggestions } = this.state;
145+
const { value, suggestions, responseSuggestions } = this.state;
144146
// console.log(value, responseSuggestions, responseSuggestions.includes(value))
145147
// Autosuggest will pass through all these props to the input.
146148
const inputProps = {

src/ListIndex.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import React, {Fragment, Component} from 'react'
33
import axios from 'axios';
44
import {searchUrl} from './url'
55
import RenderNode from './RenderNode'
6+
import SearchDescription from './SearchDescription'
67

78

89
const contentStyle = {
@@ -56,9 +57,12 @@ class ListIndex extends Component {
5657
this.props.searchSuggestedValue(name)
5758
}
5859

60+
sendIndex = index => {
61+
this.setState({index, showDescription: true})
62+
}
63+
5964
render() {
6065
const {searchResult, searchValue, responseSuggestions} = this.props
61-
const responseLength = responseSuggestions.length - 1
6266

6367
return (
6468
<Fragment>
@@ -83,7 +87,7 @@ class ListIndex extends Component {
8387
<div key={index} style={contentStyle}>
8488
{
8589
// ReactHtmlParser(value._source.ParameterValue)
86-
<div onClick={() => this.getDescription(value._source.NodeId)}>
90+
<div onClick={() => this.sendIndex(index)}>
8791
{
8892
value._source.NodeName
8993
? <span style={{}}>
@@ -110,8 +114,9 @@ class ListIndex extends Component {
110114
))
111115
}
112116
</div>
113-
: <RenderNode nodeDescription={this.state.nodeDescription}
114-
closeDetails={this.closeDetails}
117+
: <SearchDescription searchResult={searchResult}
118+
index={this.state.index}
119+
closeDetails={this.closeDetails}
115120
/>
116121
}
117122
</Fragment>
@@ -120,3 +125,7 @@ class ListIndex extends Component {
120125
}
121126

122127
export default ListIndex
128+
129+
// <RenderNode nodeDescription={this.state.nodeDescription} searchResult={searchResult}
130+
// closeDetails={this.closeDetails}
131+
// />

src/SearchDescription.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import React from 'react'
2+
import ReactHtmlParser from 'react-html-parser'
3+
4+
const SearchDescription = props => {
5+
console.log(props.searchResult, props.index)
6+
const goback = () => {
7+
props.closeDetails()
8+
}
9+
return (
10+
<div>
11+
<button onClick={goback}>Go Back To Results</button>
12+
<div style={{margin: '20px auto', width:'80vw' }}>
13+
<span style={{fontSize: '1.2em', color: 'blue'}}>Paramater Value: </span>
14+
{
15+
ReactHtmlParser(props.searchResult.hits.hits[props.index]._source.ParameterValue)
16+
}
17+
</div>
18+
</div>
19+
)
20+
}
21+
22+
export default SearchDescription

src/searchQuery.js

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
export const generateSearchQuery = searchValue => {
2+
var searchJson = {
3+
"query" : {
4+
"dis_max": {
5+
"queries": [
6+
{
7+
"function_score": {
8+
"query": {
9+
"prefix": {
10+
"ParameterDisplayName.ngram": searchValue
11+
}
12+
},
13+
"boost": 3
14+
}
15+
},
16+
{
17+
"function_score": {
18+
"query": {
19+
"prefix": {
20+
"ParameterDisplayName.edgengram": searchValue
21+
}
22+
},
23+
"boost": 5
24+
}
25+
},
26+
{
27+
"function_score": {
28+
"query": {
29+
"prefix": {
30+
"ParameterDisplayName.start_word": searchValue
31+
}
32+
},
33+
"boost": 6
34+
}
35+
},
36+
{
37+
"function_score": {
38+
"query": {
39+
"match": {
40+
"ParameterDisplayName.start_phrase": searchValue
41+
}
42+
},
43+
"boost": 8
44+
}
45+
},
46+
{
47+
"function_score": {
48+
"query": {
49+
"match": {
50+
"ParameterValueForSearch.shingles": searchValue
51+
}
52+
},
53+
"boost": 4
54+
}
55+
},
56+
{
57+
"function_score": {
58+
"query": {
59+
"match": {
60+
"ParameterValueForSearch.edgengram": searchValue
61+
}
62+
},
63+
"boost": 1
64+
}
65+
},
66+
{
67+
"function_score": {
68+
"query": {
69+
"match": {
70+
"ParameterValueForSearch.ngram": searchValue
71+
}
72+
},
73+
"boost": 0.5
74+
}
75+
}
76+
]
77+
}
78+
}
79+
}
80+
81+
return searchJson
82+
}

src/suggestionsQuery.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
export const generateSuggestionQuery = (searchValue) => {
2+
console.log(searchValue)
3+
var suggestionJson = {
4+
"query" : {
5+
"dis_max": {
6+
"queries": [
7+
{
8+
"function_score": {
9+
"query": {
10+
"prefix": {
11+
"tags.ngram": searchValue
12+
}
13+
},
14+
"boost": 0.5,
15+
"field_value_factor": {
16+
"field": "weight",
17+
"modifier": "sqrt"
18+
},
19+
"boost_mode": "sum"
20+
}
21+
},
22+
{
23+
"function_score": {
24+
"query": {
25+
"prefix": {
26+
"tags.edgengram": searchValue
27+
}
28+
},
29+
"boost": 1,
30+
"field_value_factor": {
31+
"field": "weight",
32+
"modifier": "sqrt"
33+
},
34+
"boost_mode": "sum"
35+
}
36+
},
37+
{
38+
"function_score": {
39+
"query": {
40+
"prefix": {
41+
"tags.shingles": searchValue
42+
}
43+
},
44+
"boost": 3,
45+
"field_value_factor": {
46+
"field": "weight",
47+
"modifier": "sqrt"
48+
},
49+
"boost_mode": "sum"
50+
}
51+
},
52+
{
53+
"function_score": {
54+
"query": {
55+
"match": {
56+
"tags.start_word": searchValue
57+
}
58+
},
59+
"boost": 2,
60+
"field_value_factor": {
61+
"field": "weight",
62+
"modifier": "sqrt"
63+
},
64+
"boost_mode": "sum"
65+
}
66+
},
67+
{
68+
"function_score": {
69+
"query": {
70+
"match": {
71+
"tags.start_phrase": searchValue
72+
}
73+
},
74+
"boost": 4,
75+
"field_value_factor": {
76+
"field": "weight",
77+
"modifier": "sqrt"
78+
},
79+
"boost_mode": "sum"
80+
}
81+
},
82+
{
83+
"function_score": {
84+
"query": {
85+
"match": {
86+
"tags.keywordstring": searchValue
87+
}
88+
},
89+
"boost": 5,
90+
"field_value_factor": {
91+
"field": "weight",
92+
"modifier": "sqrt"
93+
},
94+
"boost_mode": "sum"
95+
}
96+
}
97+
]
98+
}
99+
}
100+
}
101+
102+
return suggestionJson
103+
104+
}
105+

src/url.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const serverUrl = 'http://139.59.40.161:9200'
2-
export const localUrl = 'http://localhost:9200'
3-
export const suggestionsUrl = 'http://139.59.40.161:9200/suggest/phrase_suggestions/_search'
4-
export const searchUrl = 'http://139.59.40.161:9200/nodes/node_details/_search'
1+
export const serverUrl = 'http://139.59.40.161:9200/'
2+
export const localUrl = 'http://localhost:9200/'
3+
export const suggestionsUrl = `${serverUrl}ilfs_phrases/phrase_details/_search`
4+
export const searchUrl = `${serverUrl}ilfs_docs/doc_details/_search`

0 commit comments

Comments
 (0)