У меня есть группа json-документов из викиданных (http://www.wikidata.org)) для индексации на поиск в поиске.
У него есть несколько полей. Например, это выглядит ниже.
{
eId:Q25338
eLabel:"The Little Prince, Little Prince",
...
}
Здесь я хочу, чтобы пользователь выполнял поиск «точного термина», а не его части. Это означает, что если пользователь ищет «принц», я не хочу показывать этот документ в результатах поиска. Когда пользователь вводит весь термин «маленький принц» или «маленький принц», я хочу включить этот json в результат поиска, а именно.
- Должен ли я предварительно обработать все запятые в отдельном предложении (у некоторых eLabel есть десятки элементов в списке), составить из него кучу разных документов и, соответственно, создать поле ключевого слова?
- Если нет, как я могу создать файл сопоставления, чтобы выполнить поиск в соответствии с ожиданиями?
Мой текущий Mappings.json.
"mappings": {
"entity": {
"properties": {
"eLabel": { # want to replace
"type": "text" ,
"index_options": "docs" ,
"analyzer": "my_analyzer"
} ,
"eid": {
"type": "keyword"
} ,
"subclass": {
"type": "boolean"
} ,
"pLabel": {
"type": "text" ,
"index_options": "docs" ,
"analyzer": "my_analyzer"
} ,
"prop_id": {
"type": "keyword"
} ,
"pType": {
"type": "keyword"
} ,
"way": {
"type": "keyword"
} ,
"chain": {
"type": "integer"
} ,
"siteKey": {
"type": "keyword"
},
"version": {
"type": "integer"
},
"docId": {
"type": "integer"
}
}
}
}