Comments (4)
If you want to reuse your custom function or operators, they'll have to accept Expression
as a input parameter.
func WordSimilarity(word1, word2 StringExpression) FloatExpression {
return FloatExp(Func("word_similarity", word1, word2))
}
Note the use of Func
- https://github.com/go-jet/jet/wiki/FAQ#how-to-call-custom-or-currently-unsupported-sql-function
Now you can call this function as:
WordSimilarity(String("John"), Actor.LastName)
WordSimilarity(String("James"), LTRIM(Actor.FirstName, String("A")))
etc...
For CosineDistance
operator you can use the new CustomExpression
function - #355 (comment)
This method is merged to the master branch but is not yet part of the latest release.
func CosineDistance(vector1, vector2 Expression) FloatExpression {
return FloatExp(CustomExpression(vector1, Token("<=>"), vector2))
}
Since pgvector
is currently unsupported, you'll have to add it yourself:
func PgVector(array ...string) Expression {
return Raw("#1", RawArgs{"#1": <your pgvector type>})
}
Finally, you should be able to write:
CosineDistance(PgVector("john", "doe"), PgVector("mike", "jones", "jim", "nate"))
CosineDistance(PgVector("john"), Actor.PgVectorColumn)
etc...
from jet.
thanks for the suggestion @houten11! I should have clarified further in my example. I want to be able to be able to sum the two functions together without writing a new function altogether (going to use this in the select clause) e.g. CosineDistance() + WordSimilarity()
my current workaround is not wrapping the raw queries into the expression types and then wrapping it after appending them together
from jet.
Both functions returns FloatExpression
, meaning you can write:
WordSimilarity(String("John"), Actor.LastName).ADD(
CosineDistance(PgVector("john", "doe"), PgVector("mike", "jones", "jim", "nate")))
from jet.
ahhh I totally goofed on that. Just need to use the FloatExpression
instead of the generic Expression
. thanks!
from jet.
Related Issues (20)
- Postgis geography type shows as `postgres.ColumnString` HOT 3
- More convenient way to implement raw/custom operators HOT 5
- Support `WHERE "column" = ANY($1)` HOT 7
- Should return value with return type HOT 1
- Support `WHERE()` on `INSERT ON CONFLICT DO UPDATE` HOT 2
- Support for SQLite FTS5? HOT 2
- Missing struct fields in SELECT due to Postgres truncation of identifiers HOT 4
- Unsupported sql column for the array in postgres HOT 2
- Incorrect Docs: Generator Customization references invalid interfaces HOT 5
- `Generate` function signature doesn't match documentation HOT 1
- Is there a way to make generic db functions for all models/tables? HOT 1
- Sqlite GENERATE columns, but being used in INSERT HOT 4
- Support for keyword arguments to functions HOT 3
- Support for filtered aggregations HOT 1
- Improving Document about SELECT clause. HOT 3
- ProjectionList{ColumnList{...}}.As("some_alias") results in no columns being rendered in the SQL HOT 2
- Ability to add db tags to use pgx struct scanning HOT 2
- View models - NOT NULL columns have pointers HOT 2
- Database Name Change HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jet.